вторник, 25 октября 2016 г.

Одиночество

Одиночество - это когда в логе твоего веб-сервера только вот такое вот:

59.239.236 - - [24/Oct/2016:16:09:46 +0200] "GET /jmx-console HTTP/1.1" 404 177 "-" "Python-urllib/2.7"
37.59.239.236 - - [24/Oct/2016:16:09:49 +0200] "GET /manager/html HTTP/1.1" 404 177 "-" "Python-urllib/2.7"
37.59.239.236 - - [24/Oct/2016:16:09:53 +0200] "GET /msd HTTP/1.1" 404 177 "-" "Python-urllib/2.7"
37.59.239.236 - - [24/Oct/2016:16:09:56 +0200] "GET /mySqlDumper HTTP/1.1" 404 177 "-" "Python-urllib/2.7"
37.59.239.236 - - [24/Oct/2016:16:09:59 +0200] "GET /msd1.24stable HTTP/1.1" 404 177 "-" "Python-urllib/2.7"
37.59.239.236 - - [24/Oct/2016:16:10:03 +0200] "GET /msd1.24.4 HTTP/1.1" 404 177 "-" "Python-urllib/2.7"
37.59.239.236 - - [24/Oct/2016:16:10:07 +0200] "GET /mysqldumper HTTP/1.1" 404 177 "-" "Python-urllib/2.7"
37.59.239.236 - - [24/Oct/2016:16:10:11 +0200] "GET /MySQLDumper HTTP/1.1" 404 177 "-" "Python-urllib/2.7"
37.59.239.236 - - [24/Oct/2016:16:10:14 +0200] "GET /mysql HTTP/1.1" 404 177 "-" "Python-urllib/2.7"
37.59.239.236 - - [24/Oct/2016:16:10:17 +0200] "GET /sql HTTP/1.1" 404 177 "-" "Python-urllib/2.7"
37.59.239.236 - - [24/Oct/2016:16:10:22 +0200] "GET /phpmyadmin HTTP/1.1" 404 177 "-" "Python-urllib/2.7"
37.59.239.236 - - [24/Oct/2016:16:10:26 +0200] "GET /phpMyAdmin HTTP/1.1" 404 177 "-" "Python-urllib/2.7"
37.59.239.236 - - [24/Oct/2016:16:10:30 +0200] "GET /mysql HTTP/1.1" 404 177 "-" "Python-urllib/2.7"
37.59.239.236 - - [24/Oct/2016:16:10:33 +0200] "GET /sql HTTP/1.1" 404 177 "-" "Python-urllib/2.7"
37.59.239.236 - - [24/Oct/2016:16:10:37 +0200] "GET /myadmin HTTP/1.1" 404 177 "-" "Python-urllib/2.7"
37.59.239.236 - - [24/Oct/2016:16:10:41 +0200] "GET /phpMyAdmin-4.2.1-all-languages HTTP/1.1" 404 177 "-" "Python-urllib/2.7"
37.59.239.236 - - [24/Oct/2016:16:10:44 +0200] "GET /phpMyAdmin-4.2.1-english HTTP/1.1" 404 177 "-" "Python-urllib/2.7"
37.59.239.236 - - [24/Oct/2016:16:10:48 +0200] "GET / HTTP/1.1" 200 612 "-" "Python-urllib/2.7"
37.59.239.236 - - [24/Oct/2016:16:10:52 +0200] "GET /sqlite/main.php HTTP/1.1" 404 177 "-" "Python-urllib/2.7"
37.59.239.236 - - [24/Oct/2016:16:10:55 +0200] "GET /SQLite/SQLiteManager-1.2.4/main.php HTTP/1.1" 404 177 "-" "Python-urllib/2.7"
37.59.239.236 - - [24/Oct/2016:16:10:58 +0200] "GET /SQLiteManager-1.2.4/main.php HTTP/1.1" 404 177 "-" "Python-urllib/2.7"
37.59.239.236 - - [24/Oct/2016:16:11:04 +0200] "GET /sqlitemanager/main.php HTTP/1.1" 404 177 "-" "Python-urllib/2.7"
37.59.239.236 - - [24/Oct/2016:16:11:09 +0200] "GET /SQlite/main.php HTTP/1.1" 404 177 "-" "Python-urllib/2.7"
37.59.239.236 - - [24/Oct/2016:16:11:14 +0200] "GET /SQLiteManager/main.php HTTP/1.1" 404 177 "-" "Python-urllib/2.7"
212.129.54.164 - - [24/Oct/2016:16:28:00 +0200] "PROPFIND /webdav/ HTTP/1.1" 404 177 "-" "WEBDAV Client"

понедельник, 22 августа 2016 г.

Два способа взаимодействовать с подчиненными

- Просить подчиненного работать так, как удобно руководителю, уменьшая нагрузку на руководителя. Это микроменеджмент.

- Просить подчиненного работать так, как ему удобно, увеличивая КПД подчиненного. Это делегирование.

пятница, 11 июля 2014 г.

Mobile Orders - анонс


Минувший понедельник стал важным днем для меня и для еще для нескольких человек - мы запустили открытую регистрацию в проекте “MobileOrders". За полтора года мы проделали уйму работы: придумали фирменный стиль и дизайн всех частей целого, переписали с нуля мобильный движок конструктора приложений для iOS и Android, сделали новый DIY-сайт с дейтингом и геолокацией (шутка), развернули небольшую ферму-билдер приложений на Mac Mini , сделали новый красивый публичный сайт-визитку и связали все это вместе.

Отладка, исправление багов, перфекционист - арт-директор (я просил 600 пикселей по ширине, а вы тут наверстали 598), споры до глубокой ночи о минимально необходимой для старта функциональности. Споры о том, “вертикалка" или не "вертикалка”, споры еще о тысяче разных вещей. Выкат блоков новой функциональности для ключевых клиентов, снова ловля багов и неувязок, еще выкат, и еще… И наконец - финальная неделя перед релизом, программист в пять утра пишет какие-то вопросы, в девять утра звонит наш коммерческий директор и рассказывает, как он ка-а-ак всех клиентов на следующей неделе обзвонит и сколько одновременно можно отправить приложений на публикацию и еще он вспомнил “одну маленькую вещь” и еще час обсуждаем эту маленькую вещь.

http://www.mobileorders.ru/



Если ваш бизнес связан с доставкой постоянным клиентам еды, воды, другой продукции - вы сможете за пару дней выпустить свое собственное мобильное приложение. А для клиентов одного доставочного клуба  у нас есть специальное предложение...

Ждем, с некоторой опаской, фидбека пользователей - а вдруг им не понравится?
И уже есть сотни идей - как улучшить, что добавить, что не очень нужное убрать. И список срочных доработок, отсортированный по убыванию срочно-срочности 
И есть роадмап на ближайший год как минимум. Он - этот год, обещает стать очень интересным.

пятница, 14 февраля 2014 г.

Архитектура Open Source приложений

Всем уважаемым IT-шникам советую, хотя бы по-диагонали, почитать данный труд. Подробно разобраны высокоуровневые архитеткуры, подходы и принципы работы нескольких десятков известных проектов с открытым исходным кодом - Eclipse, Asterisk, ngnix, git и других.


искренне рекомендую для расширения кругозора.

http://rus-linux.net/MyLDP/BOOKS/Architecture-Open-Source-Applications/index.html

воскресенье, 2 февраля 2014 г.

Гадости мира юникода - акценты и нормализация

Есть проблема:

на диске лежит файл "андрей.png"
Мы пытаемся открыть этот файл (код на пайтоне, f = open("андрей.png",'r'))

пример отлично отрабатывает на Mac OSX, однако если перенести файл и скрипт на Linux (Ubuntu) то файл не открывается, пишет что не найден. Здорово?

Здорово. Я раньше думал, с юникодом все просто. Ан нет. "и краткое" может быть закодировано в utf-8 двумя различными способами - с акцентом или без. Остальные диакритические символы с галочками, крыжиками и умляутами - тоже.

при этом, "по умолчанию" разные операционные системы используют разные пути нормализации юникодных имен файлов - Linux, Windows и другие системы используют NFC (нормальная форма С, символ с акцентом - один знак), MacOS - NFD (нормальная форма D, акценты отдельно от символа). один и тот же символ Й, закодированный в разных нормальных формах - это два разных набора бит (на примере UTF-8)


  • NFC: "\xd0\xb9"
  • NFD: "\xd0\xb8\xcc\x86"


И как следствие, файл не находится, если он записан например в NFC, а в open() передана строка в NFD. Такая вот гадость на ровном практически месте.

Есть несколько способов решить проблему. мне нравится способ отказаться от юникода в именах файлов вообще (pip install unidecode и пользуйся на здоровье).

Либо для кросс-платформенности использовать unicodedata и делать две попытки открыть файл - один с normalize(NFC) а другой - с normalize(NFD)

по второму варианту - вот такая простая функция

 # check for unicode  
 # it supports unicode normal forms NFC and NFD  
 # see here: http://yuryskaletskiy.blogspot.ru/2014/02/blog-post.html  
 # returns properly normalized filename if file exists, otherwise None  
 def unicode_filename_check(name):  
      name_u = name  
      if not isinstance(name, unicode):  
           name_u = name.decode('utf-8')  
      if os.path.isfile(name_u):  
           return name_u  
      #try with NFC  
      name_u = normalize('NFC', name_u)  
      if os.path.isfile(name_u):  
           return name_u  
      #try with NFD  
      name_u = normalize('NFD', name_u)  
      if os.path.isfile(name_u):  
           return name_u  
      return None  

ссылки по теме

- википедия http://en.wikipedia.org/wiki/Unicode_normalization
- статейка http://vemod.net/filenames-and-unicode-normalization-forms
- про эти же грабли http://nedbatchelder.com/blog/201106/filenames_with_accents.html


четверг, 30 мая 2013 г.

Учетные данные с Госуслуг утекли?

Что касаемо недавних сообщений о накрутке голосов на "Российской Общественной Инициативе". Как мне кажется, есть немалая вероятность компрометации учетных записей с Госуслуг.

среда, 10 апреля 2013 г.

Яндекс Директ и поиск в Гугле


Вот интересное обнаружил - в последнее время Яндекс Директ стал выдавать неприлично релевантную рекламу. Ну вот, искал я информацию про 3-НДФЛ в интернете, а через 2 дня после этого яндекс начал мне подсовывать рекламы сайтов которые помогают в заполнении.

Вроде бы, ничего особенного - яндекс анализирует мой поисковый трафик, подсовывает релевантную рекламу. Но (!) искал-то я в Гугле :-) Вот откуда он спрашивается это знает?

Пока что есть пара мыслей, как они это смогли сделать, из них одна совсем нелепая - что поисковики договорились обмениваться трафиком.  :-)