Как часто вас посещала мысль о трудоустройстве за границей, будь то просто временная работа или переезд на постоянное место жительство? Какую страну выбрать? Возможно ли пройти собеседования за тысячи километров по телефону и получить джоб-офер? Как будет выглядеть переезд и жизнь в другой стране? В данной статье я бы хотел поделиться личным опытом и опытом многих моих друзей работающих за рубежом.
User
Настройка SMS-шлюза Kannel
5 min
64KTutorial
Несколько раз были упоминания такого замечательного софта как kannel, однако почему-то нет конкретных описаний примеров его интеграции. Здесь приводится пример сервиса, который можно реализовать при договоренности с оператором сотовой связи (опсосом), однако до сих пор не понятно каким образом это сделать. Попробую исправить эту ситуацию.
+18
Погружаемся в Docker: Dockerfile и коммуникация между контейнерами
8 min
394KВ прошлой статье мы рассказали, что такое Docker и как с его помощью можно обойти Vendor–lock. В этой статье мы поговорим о Dockerfile как о правильном способе подготовки образов для Docker. Также мы рассмотрим ситуацию, когда контейнерам нужно взаимодействовать друг с другом.

В InfoboxCloud мы сделали готовый образ Ubuntu 14.04 с Docker. Не забудьте поставить галочку «Разрешить управление ядром ОС» при создании сервера, это требуется для работы Docker.

В InfoboxCloud мы сделали готовый образ Ubuntu 14.04 с Docker. Не забудьте поставить галочку «Разрешить управление ядром ОС» при создании сервера, это требуется для работы Docker.
+32
Django 1.7
1 min
21KПосле почти года разработки вышел долгожданный релиз Django 1.7.

Ключевые изменения новой версии

Ключевые изменения новой версии
- Прекращена поддержка Python 2.6.
- Добавлена поддержка миграций непосредственно в сам фреймворк. Здесь можно посмотреть инструкции о переходе с South.
- Переработан механизм загрузки приложений. Теперь models.py — необязателен.
- Изменения в Field API, в частности, добавлен обязательный метод deconstruct() для поддержки миграций.
- Добавлена возможность вызова QuerySet напрямую из менеджера. Также теперь можно указывать необходимый менеджер при использовании связи между моделями.
- Новая система для проверки проекта и диагностики ошибок, вместо validate добавлена команда check.
+47
10 потенциальных SQL ошибок, которые делают программисты
6 min
234KTutorial
Translation
Оригинал статьи носит название «10 SQL ошибок, которые делают Java разработчики», но, по большому счёту, приведённые в ней принципы можно отнести к любому языку.

Java программисты мешают объектно-ориентированное и императивное мышление в зависимости от их уровня:
— мастерства (каждый может программировать императивно)
— догмы (шаблон для применения шаблонов где-либо и их именование)
— настроения (применять истинный объектный подход немного сложнее чем императивный)
Но всё меняется, когда Java разработчики пишут SQL код.

Java программисты мешают объектно-ориентированное и императивное мышление в зависимости от их уровня:
— мастерства (каждый может программировать императивно)
— догмы (шаблон для применения шаблонов где-либо и их именование)
— настроения (применять истинный объектный подход немного сложнее чем императивный)
Но всё меняется, когда Java разработчики пишут SQL код.
+28
Избавляемся от строковых констант в Objective-C
5 min
14KМагические константы в коде — зло. Строковые константы в коде — еще большее зло.
И вроде бы от них никуда не денешься, они повсюду:
1) При загрузке объектов из xib-ов:
2) При работе с CoreData:
3) Если вы используете KVO, то строки появляются и тут:
4) Ну и KVC:
5) Но даже если CoreData вы предпочитаете работу с SQLite напраямую, xib-ами вы брезгуете, то вот такой код вам должен быть знаком:
6) Ну и когда Apple представила миру Storyboard — это было замечательно, если-бы не одно но:
Вы видите проблему? Она состоит в том, что компилятор никак не проверяет содержимое строк, поскольку не знает (да и не может в принципе знать), что в них содержится. И если вы опечатаетесь или измените значение соответствующих полей в xcdatamodel / xib / storyboard / переименуете property, то ошибка вылезет не на стадии компиляции, а в рантайме, и отловить и исправить ее будет дольше и дороже.
Так что-же можно сделать?
И вроде бы от них никуда не денешься, они повсюду:
1) При загрузке объектов из xib-ов:
MyView* view = [[[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil] lastObject];
MyViewController* controller = [MyViewController initWithNibName:@"MyViewController" bundle:nil];
2) При работе с CoreData:
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"MyCoreDataClass" inManagedObjectContext:moc]];
[request setSortDescriptors:@[ [[NSSortDescriptor alloc] initWithKey:@"someProperty" ascending:NO] ]];
3) Если вы используете KVO, то строки появляются и тут:
[self addObserver:someObservedObject
forKeyPath:@"someProperty"
options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld)
context:nil];
4) Ну и KVC:
NSInteger maxValue = [[arrayOfMyClassObjects valueForKeyPath:@"@max.someProperty"] intValue];
5) Но даже если CoreData вы предпочитаете работу с SQLite напраямую, xib-ами вы брезгуете, то вот такой код вам должен быть знаком:
[self.tableView dequeueReusableCellWithIdentifier:@"MyTableViewCell"];
6) Ну и когда Apple представила миру Storyboard — это было замечательно, если-бы не одно но:
[self performSegueWithIdentifier:@"MySegue" sender:nil]
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:( id )sender {
if ( [segue.identifier isEqual:@"MySegue"] );
}
Вы видите проблему? Она состоит в том, что компилятор никак не проверяет содержимое строк, поскольку не знает (да и не может в принципе знать), что в них содержится. И если вы опечатаетесь или измените значение соответствующих полей в xcdatamodel / xib / storyboard / переименуете property, то ошибка вылезет не на стадии компиляции, а в рантайме, и отловить и исправить ее будет дольше и дороже.
Так что-же можно сделать?
+22
Как Яндекс распознаёт музыку с микрофона
10 min
161K


В мире есть всего несколько специализированных компаний, которые профессионально занимаются распознаванием музыкальных треков. Насколько нам известно, из поисковых компаний Яндекс стал первым, кто стал помогать российскому пользователю в решении этой задачи. Несмотря на то, что нам предстоит ещё немало сделать, качество распознавания уже сопоставимо с лидерами в этой области. К тому же поиск музыки по аудиофрагменту не самая тривиальная и освещённая в Рунете тема; надеемся, что многим будет любопытно узнать подробности.
+305
Стартап-ловушка
4 min
78KTranslation
- Вы присоединились к новому стартапу.
- Вы мегаталантливое создание.
- Вы можете работать 60, 70, 80 часов в неделю для достижения результата.
- Вы офигенный разработчик и дизайнер.
- Вы не попадетесь в ловушки, в которые попадались другие.
- Вы убедитесь, что в этот раз все будет по-другому.
- Вы настолько хороши, что правила вам ни к чему.
- Вы в жопе.
+66
10 причин, по которым Вы бросите свою работу в 2013 году
9 min
809KTranslation

Люди читают TechCrunch потому, что они хотят что-то создать, они не желают следовать приказам всю жизнь и хотят финансовой свободы. Давайте начистоту. Эти три пункта кажутся притягательными. Да благословит Вас Бог. Надеюсь, что когда Вы их обретете, Вы сможете сохранить их. Большинству людей (например, МНЕ), нужно просто немного покататься на американских горках, потому что мы тупые. Но некоторые люди умные.
+124
Создание Warcraft (часть 3)
18 min
67KRecovery Mode
Translation
От переводчика
Я очень люблю игры компании Blizzard и, наткнувшись недавно на блог одного из из создателей серии Warcraft — Патрика Вайата, решил перевести третью заметку о создании первой части этой замечательной игры. Перевод первых двух (первая, вторая) уже есть на хабре.
Итак, вас ждёт рассказ об источниках финансирования Blizzard, о том, как Стю Роуз устроил дизайнерский переворот, о тумане войны и, самое главное, о впечатлениях автора статьи от самой первой мнопользовательской игры и о её неожиданных итогах.
За всем этим добро пожаловать за хабракат.
Это мой первый перевод, так что я буду рад всем сообщениям об ошибках, замечаниям и исправлениям.
+107
Миникомпьютер из роутера с OpenWRT: пишем USB class-driver под Linux
20 min
79K
Добрый день, уважаемые хабровчане. В прошлой статье мы с вами разработали простую USB-видеокарту на базе STM32F103 и китайского дисплейного модуля на контроллере ILI9325.
Проверяли мы его из юзерспейса, при помощи LibUSB. Ну что ж, пришло время нам написать свой собственный драйвер, который позволит делать все то же самое, но из-под Linux и без дополнительных библиотек. Этот драйвер мы внесем в дерево исходников OpenWRT и он поселится там наравне со всеми остальными.
Начнем.
+118
Внутреннее устройство Git: хранение данных и merge
9 min
90KВ процессе перехода с SVN на Git мы столкнулись с необходимостью переписывания наших внутренних инструментов, связанных с развёртыванием кода, которые ориентировались на существование линейной истории правок (и разработку в trunk). На Хабре уже публиковались возможные решения этой проблемы через Git-SVN, но мы пошли другим путём. Нам нужна поддержка таких возможностей Git, как branching и merge, поэтому мы решили разобраться в основах, как же работает Git и каким способом должна осуществляться интеграция с ним.
+77
Групповые сопротивления
12 min
27KTutorial
Многие менеджеры в приватных беседах жалуются на сотрудников. Вроде бы и знающие специалисты, а работу не работают. Более того — часто отнимают время у тех, кто таки работает. Хоть увольняй.
Многие родители жалуются на что-то подобное в отношении детей. И тут уволить уже нельзя.
И сотрудники, и дети, часто действуют похожими способами. Реализация разная, а виды действий — схожие:

У каждого из этих видов есть свои формальные признаки и стандартные лекарства.
Многие родители жалуются на что-то подобное в отношении детей. И тут уволить уже нельзя.
И сотрудники, и дети, часто действуют похожими способами. Реализация разная, а виды действий — схожие:
- Привлечение внимания
- Борьба за власть
- Месть и личные нападки
- Беспомощность

У каждого из этих видов есть свои формальные признаки и стандартные лекарства.
+59
Ошибки трансферта технологий №3 / «Ошибки оффшоров» + АПДЕЙТ
18 min
9.3KОказывая помощь в выводе разработок и бизнесов на внешние зарубежные рынки, приходится постоянно наблюдать одни и те же ошибки, и как следствие — неудачи и потери.
+65
Монетизация и продвижение игры от независимых разработчиков
6 min
31KЯ заканчиваю раскрывать внутреннюю кухню создания игры с точки зрения независимых разработчиков. В этой статье речь пойдёт о монетизации и продвижении игры. А также раскрою наши цифры по итогам первых двух недель после запуска и затраты на разработку.
Предыдущие статьи:
Предыдущие статьи:
- Путь независимых разработчиков на примере игры, которую они не пиарят в статье со сложным и отвлечённым названием про путь независимых…
- Техническая препарация одной игры, созданной независимыми разработчиками.
+22
Information
- Rating
- Does not participate
- Registered
- Activity