Archive 2013

Мысли в слух о новых технологиях, фреймворках и time to market

Published at December 26, 2013 ·  5 min read

Как всегда, в рубрике “мысли в слух” звучит только исключительно мнение автора и может не соответствовать действительности. Безусловно, всем, ну ладно, почти всем, хочется писать только на самых последний версиях фреймворков, использовать самые новые технологии и навсегда забыть о так называемом legacy code. Но мало кто из разработчиков думает о том, когда и зачем это нужно, а когда - невозможно. Разберем пример выбора фреймворка Х на примере нескольких случаев. Случай #1....


Selenium Webdriver работает без Java

Published at November 22, 2013 ·  1 min read

Вот так неожиданно для себя узнал что Selenium Webdriver работает без Java. До этого всегда был уверен, что такого не может быть. Возможно, это произошло с релизом Selenium 2, возможно нет. Но мой мир уже не будет таким как прежде. Не поверил, пока сам не убедился в этом. Пришлось ставить виртуалку без Java и проверять следующий код: ...


Build succeeded, 156 warnings

Published at November 18, 2013 ·  2 min read

Запустил “make build” и получил 156 ворнингов:(… Хотя, достаточно быстро получил более радужное число - 69, что тоже не мало. Нужно фиксить дальше, а пока - немного очень IMHO на эту тему. Отключать или нет параметр “mark warnings as errors” (название может отличаться, но суть остается той же) - часто решают для конкретного проекта и/или команды. Иногда это не мешает работы продукта. Я бы сказал что в 98% случаев это не мешает, зато остаются 2%....


Параллельные билды в Jenkins

Published at November 15, 2013 ·  2 min read

Разберем ситуацию, ставшую достаточно распространенной в наше время. Есть распределенная команда, допустим в двух городах (А и Б), которая работает над одним крупным проектом. Сборка проекта происходит на Jenkins’е в городе А и длится, например 3 минут. Скачать готовый продукт из города А в город Б можно в среднем за 30 минут (в зависимости от времени суток, загрузки канала, фазы луны и т.д.). Итого: команде из города Б нужно ждать час(60 минут) чтобы запустить/протестировать свежий билд....


Как быстро поднять простой HTTP-сервер

Published at October 8, 2013 ·  1 min read

Скорее заметка для себя. Постоянно забываю об этом ключе. Иногда нужно очень быстро поднять HTTP-сервер с минимальным функционалом. Например, нужно проверить HTML+JavaScript, который работает только через веб-сервер. Я, конечно понимаю, что у меня под рукой всегда есть, как минимум nginx, и поднять на нем сайт, который будет раздавать статические фалы, делов на 5-10 минут. Но, во-первых, это долго, а во-вторых, этот самый nginx у меня находится на виртуалке, пусть и включенной в 90% времени на ноутбуке....


Подводные камни при использовании Fabric(SSH) и Jenkins

Published at September 16, 2013 ·  2 min read

Или мне так не везет, или для всех это совершенно очевидные вещи, но я, при выполнении простой fabric task’и копирования содержимого директорий, столкнулся на ряд проблем, которые хоть и казались простыми и распростаренными, но были описаны в найденных мной блогах и мануалах в плной мере. Проблема #1 - неправильный пользователь Не всегда бывает что имя локального пользователя совпадает с удаленным. Ситуация распространенная и описанная всеми, кому не лень. Решение простое - указывем нужного пользователя в переменной env....


Настройка PHP+Nginx для 'Hello, world'

Published at September 6, 2013 ·  1 min read

Иногда приходится делать удивительные и неожиданные для себя вещи. Например, писать что-то на PHP. Но написать мало - надо еще проверить что написанный код работает. В моем случае приложение было немного сложнее классического “hello, world”, но все-равно требовалось проверить его работоспособность. Т.к. это всего-лишь тестовая версия/PoC или что-то такое, интересовала самая простая схема его запуска. Apache не виртуалке c Ubuntu не стоял, под руку попал Nginx. Далее все происходило так:...


MacOS Case-Sensitive FIle System

Published at January 13, 2013 ·  1 min read

Какое-то время назад, для меня было удивительно, что в Mac OS X, в отличии от Linux, стоит Case-Insensitive файловая система. Т.е. файловая система не чувствительная к регистру файлов и директорий. В большинстве случаев, это не причиняет вреда, но иногда приносит достаточно досадные проблемы. Что бы избавиться от этого можно либо создать раздел с Case-Sensitive файловой системой, либо создать временный (или не очень) виртуальный диск. Плюс второго способа в том, что этот диск будет храниться одним файлом и, при необходимости, если легко будет удалить....


Типы проектов со стороны разработчика

Published at January 12, 2013 ·  1 min read

Суббота, вечер, пишу очень IMHO. Мнение атора может не совпадать с мнениями других и действительностью. С моей точки зрения, как разработчика проекты делятся на:  Outsourcing - вроде все понятно, самый популярный вид разработки в наших краях, но бывает разный - product development - когда вся разработка происходит тут, у нас, менеджмент тоже свой, но заказчик кто-то из вне. Собственно заказчик, со всемы вытикающими отсюда плюсами и минусами, единственное, что отличает этот пункт, от пункта “own product - “классический аутсорс” (не знаю как правильно называется) - когда заказчик возводится чуть ли не до уровня Бога, а мы для него становимся просто дешовой рабочей силой, которая должна молча, быстро и хорошо выполнять задачи, которые меняются по срокам, целям и приоритетам по неизвестной для нас причине....


TestFixtures - маленькая, но очень полезная библиотека

Published at January 11, 2013 ·  1 min read

Давно решил не писать отзывы к библиотекам/фреймворкам, но эта поражает меня уже второй раз так, что в твиттере не помещается вся мысль. Давно решил не писать отзывы к библиотекам/фреймворкам, но эта поражает меня уже второй раз так, что в твиттере не помещается вся мысль. TestFixtures (http://packages.python.org/testfixtures/) - приятное дополнение, а в некоторых случаях, и замена Mock. То, что она умеет делать mock’и объектов - этим никого не удивишь. Вся прелесть TestFixtures в том, что в ней уже из коробки доступны те самые вещи, которые часто приходится писать самому, тем самым изобретать свой велосипед:(....


Немного о внутренностях DNS (Domain Name Service)

Published at January 10, 2013 ·  3 min read

Проводя небольшой рефакторинг кода, свазаного с работой DNS, решил больше узнать о нем и поделиться со всеми полезной (или не очень) информацией. DNS (Domain Name Service) - служба доменных имен. С ним (DNS) все сталкивались, но далеко не все знают как он работает и что может. В простейшем случае - это сервис, который переводит доменное имя в IP адрес, а вот что у него внутри - читайте ниже. Как и большинство протоколов, DNS имеет свою спецификацию, описанную в RFC 1035 и RFC 1706....


Django 1.5 Release Candidate

Published at January 9, 2013 ·  2 min read

4 января вышел релиз кандидат fullstack-фрейморка для разработки веб-приложения Django. Обзоры, наверено, не писали/читали только ленивые. Но пишут, в основном, про мажорные фичи, из-за которых и выпускают релиз. Я перевел свой небольшой прототипчик одного приложения на Django 1.5 RC и поюзал некоторые минорные нововведения, о которых пишут мало, но которые почти делают каждый релиз тем, из-за чего часто хочется использовать именно его. Из того, что мне понравилось - это: - изменения в template engine: теперь True, False, None воспринимаются так же, как и в python; - дополнительные батарейки для работы с временными зонами - мелочь, а очень приятно; - исправленна ошибка OutOfMemory при использовании команды dumpdata - особенно полезно на небольших хостингах; - mod_wsgi auth handler - для тех, кто все еще использует Apache и Basic авторизацию; - в debug конфигурации приложения логи дополнительно выводятся в консоль; - user_login_failed событие - понятно что это такое, +1 к секьюрити: легче блокировать ботов от перебора паролей и плюс к защите от DDoS; - loaddata имеет опцию для игнорирования колонок, которых больше нет в модели - просто в восторге от этой фичи, имхо, она для меня теперь станет неаменимой при разработке, кода модель активно меняется, а django south использовать еще рано (в момент разработки, а не при выходе в production)....


Больше велописедов, хороших и разных

Published at January 8, 2013 ·  1 min read

Читая серию заметок Кости Данилова “Облака ‘на коленке’” подумалось: велосипеды - это хорошо. Но, что б это было хорошо, они должны соответствовать таким требованиям (1 или более): - выполнять роль прототипа (PoC); - **создаваться для того, что бы разобраться с каким-то фреймворком и/или технологией;** - удаляться при первом же понимании того, что кто-то это уже сделал. Если ни одно из вышеперечисленных правил не выполняется, то: - разрабочик чего-то не знает...


GIT: некоторые полезные команды

Published at January 7, 2013 ·  1 min read

Надоело постоянно гуглить одно и то же, решил записать в отдельную заметку.   Установить значения username/email: $ git config –global user.email “e0ne@e0ne.info” $ git config –global user.name “e0ne” через .gitconfig это делать не всегда удобно, т.к. иногда нужно разные name/email для разных upstream repos Установить upstream branch: $ git branch –set-upstream master upstream/master Поменять последний коммит: $ git commit –amend -a Поменять автора нескольких коммитов: $ git filter-branch –commit-filter ‘...


Network namespace - виртуальный сетевой стек в linux

Published at January 6, 2013 ·  3 min read

Почему-то, информации на тему “что такое network namespace” я практически не нашел, что в очередной раз доказыват: английский - основной язык для ИТ. Почему-то, информации на тему “что такое network namespace” я практически не нашел, что в очередной раз доказыват: английский - основной язык для ИТ. Network namespace - это логически отделенный от других стек сетевых протоколов в Linux. Такая себе контейнерная виртуализация для сетевых интервейсов, когда chroot LXC и нужна виртуализация только сетевых интерфейсов....


Статический анализ динамического кода: мысли вслух

Published at January 5, 2013 ·  2 min read

В очередной раз чуть не наткнулся на давнюю проблему, но вовремя опомнился. При pylint “радостно” сообщил, что в некоторых модулях есть unused imports и их можно(нужно) удалить. Все было бы хорошо, если б не одно но: python очень даже динамический язык, а pylint ничего не знает о том, что будет происходить с кодом во время выполнения. Исходя из этого, уже можно представить какие проблемы могут быть. В моем случае, код был такой:...


KharkivPy ищет докладчиков

Published at January 4, 2013 ·  1 min read

В этор раз идет подготовка сразу к двум KhakrivPy, соответственно докладчиков нужно найти больше. 26-го января пройдет KharkivPy #0, посвященный функциональным языкам программирования (Erlang, Lisp, Haskel, Scala, etc). На данный момент к нам в гости с докладом согласился приехать из Киева Владимир Кирилов (http://kirillov.im/, @darkproger) с докладом про Erlang, тема уточняется. Ищем докладчиков, которые расскажут что-то интересное о других языках и/или про Erlang. Опыт в продкашн приветствуется. 2-го марта традиционный KharkivPy #7, на который тоже ищутся докладчики....




Archives

2018 (2)
2017 (3)
2016 (2)
2015 (3)
2014 (5)
2013 (17)
2012 (22)
2011 (35)
2010 (25)
2009 (35)
2008 (32)
2007 (2)