Используем КЛАДР

Standard

Недавно в одном интернет-магазине пришлось добавить адреса со всей России, чтобы при заказе показывалась улица в autocomplete. Эта база данных называется  ‘КЛАДР‘, и если вы захотите ее использовать, вам придется немного потрудиться.

В первую очередь ссылка на оригинальный сайт вместе с документацией. Следует заметить, что формат БД к-ый они предоставляют не sql, а dbf (вроде). Вот здесь можно скачать в sql. Сразу скажу, никаких вторичных ключей в бд — нет, все связи декларируются через поле code (см. ниже).

Список таблиц КЛАДРа:

  1. altnames — таблица перевода старых названий в новые (дома, улицы, населенные пункты)
  2. doma — соотв. дома
  3. flat — номера квартир домов
  4. kladr — регионы, районы, города, поселки и т.д.
  5. socrbase — расшифровка сокр. названий, например в табл. kladr в после socr может быть «р-н» и еще куча др. значений
  6. street — улицы

Приведу пример привязки улицы к городу, региону и т.д. Итак, поле code в таблице street составленно по след. принципу: «CC РРР ГГГ ППП АА», где каждая буква — обозначает цифру, СС — код субъекта РФ (таблицы с кодами — нет, смотрите документацию на последней странице — там есть), РРР — район, ГГГ — город, ППП — населенный пункт, АА — признак актуальности (некоторые улицы прекращают свое существование, либо объединяются с другими — их новое значение нужно искать в таблице altnames).

 

Как сбросить dns кеш

Standard

Чтобы сбросить в хроме нужно зайти на эту страницу сюда - это сбросит dns кеш браузера. В windows 7 сбрасывается так: открываете консоль и пишете туда ipconfig /flushdns. Если нужно посмотреть ресурс только на одной машине и побыстрее — помогут hosts файлы.

Что узнал за день

Standard

1) Если в sql таблице есть столбец со значениями вместе с null и мы хотим отсортировать таким образом, что строки с null значением будут идти после примитивных типов (45, 4662, 113 и т.д.) нужно сделать так: … ORDER BY ISNULL(col1), col1

2) Псевдокласс :first-letter работает только для block элементов, не inline ! Поэтому скорей все придется переводить a теги в display: block

3) Плюсы паттерна Singleton:

  • Избавляемся от глобальных переменных, что позволяет сделать код более ортогональным. Правда взамен получаем другой тип глобальной связи.
  • Получаем всегда один и тот же объект.
  • Позволяет избавится от передачи параметров нужных другому классу, через класс, к-ый их не использует.

Новое в chrome developer tools

Standard

Вчера была сессия на Google IO 2013 посвященная Ghrome developer tools, сегодня выложили видео. Что понравилось: workspaces, canvas performance recording, поддержка sass.

Ниже видео выступления на google io + еще пара недавних видео о dev тулзах.


Кстати, то расширения для хрома для удобной работы с android лежит здесь: https://github.com/repenaxa/ADBPlugin


Верстка под ipad

Standard

Меняю верстку сайту, при работе с ipad выплывает много тонкостей:

  1. Телефоны на ipad отображаются синим цветом, как ссылки. => добавьте <meta name=»format-detection» content=»telephone=no» />
  2. Input и submit кнопки закруглены, хотя по стилям так быть не должно. Задайте правило => input, textarea {
    -webkit-appearance: none;
    -webkit-border-radius: 0;
    }
  3. Для div`ов бывают артифакты в виде серых полос по краям (border). Добавьте <meta name=»viewport» content=»initial-scale=1, maximum-scale=3″>

Если крон запускается не в то время

Standard

У меня в кронтабе стояла такая строка:
0 1 * * * /var/www/def/symfony parse >> /var/www/def/parser.log
запускался скрипт в 5 часов по нашему, это было вызвано двумя причинами.
Первая — надо обновить дистрибутив (apt-get update && apt-get upgrade)
Вторая — крон запускается (на debian) почему то по UTC времени, мне надо было запускать по Москве. Открыл /etc/default/cron, добавил строку «TZ=’Europe/Moscow’, перезагрузил крон (/etc/init.d/cron restart) и все заработало.

Как отсортировать записи в таблице по Enum полю

Standard

Есть пара способов, как отсортировать enum:

  1. Если вы хотите отсортировать в алфавитном порядке, используйте CONCAT:
    SELECT * FROM SomeTable ORDER BY CONCAT(ENUM_FIELD);
  2. Если надо использовать определенный порядок:
    ORDER BY FIELD(ENUM_FIELD, 'FIRST_VAL', 'SECOND_VAL', 'THIRD_VAL');
  3. Еще один случай, к примеру вам надо отсортировать следующим образом: есть столбец column, первыми идут значения ‘red’, затем любые кроме ‘yellow’ в конце ‘yellow’, внутри каждой группы сортировать по столбцу name :
    ORDER BY CASE color
    WHEN 'YELLOW' THEN 3
    WHEN 'RED' THEN 1
    ELSE 2
    END, name

Это все проверено на mysql, я видел в инете люди ругались на 3 решение используя db2 базу данных.

Блоги о highload от компаний

Standard

Довольно часто многие крупные компании, стартапы ведут блог для нас с вами простых программистов и архитекторов, публикуя посты о решении трудных проблем масштабируемости. Ниже список блогов, к-ые я сохранил у себя, если кто знает еще — пишите в комментах, добавлю.

  1. Amazon Web Services
  2. Zynga
  3. Flickr
  4. Facebook
  5. Twitter
  6. Foursquare
  7. LinkedIn
  8. Tumblr
  9. Pinterest
  10. Reddit (иногда бывают тех. посты)
  11. Ebay

Ускоряем вордпресс

Standard

Для блога сделал очередное улучшение: теперь fancybox файлы вставляются в html, в том случае, если в посте есть изображения.
Зачем ? Чтобы, блог быстрее работал у конечного пользователя — уменьшая количество загрузок (особенно скриптов) мы ускоряем наш сайт.
Внутри header.php в head тегах вставьте следующий код:

<head>
<? if(!is_front_page()):?>
#SOME CODE
<? endif;?>
</head>

Там где, #SOME CODE можно расположить все стили и скрипты к-ые нужны только в посте, к примеру код комментариев ВКонтакте, fancybox, подсветку синтаксиса и тд.
Вот весь код, к-ый вставляет скрипты или стили, если есть картинки:

<?
$content = $post->post_content;
$searchimages = '~]* />~';
preg_match_all( $searchimages, $content, $pics );
$imgs_num = count($pics[0]);
// Если у нас есть картинки - грузим fancybox
if($imgs_num > 0): ?>
<!-- ВСТАВЛЯЕМ СЮДА СВОИ ФАЙЛЫ -->
<? endif; ?>