Как стать автором
Обновить
80
0

Пользователь

Отправить сообщение

Виджет для вывода пользовательских данных на Android

Время на прочтение1 мин
Количество просмотров9.7K
Universal Widget позволяет размещать на рабочем столе Android информацию о любой из ваших систем, описанную в формате JSON. Например, статистику посещений вашего сайта, информацию о заказах в интернет-магазине, загрузку процессора на сервере и т.д.



Три простых шага для размещения информации на рабочем столе:

1) Создайте скрипт – провайдер данных в формате JSON
2) Установите Universal Widget
3) В настройках виджета задайте адрес скрипта — провайдера данных, а также интервал обновления
Читать дальше →
Всего голосов 59: ↑55 и ↓4+51
Комментарии53

Устраиваемся программистом за рубежом

Время на прочтение16 мин
Количество просмотров63K
Как часто вас посещала мысль о трудоустройстве за границей, будь то просто временная работа или переезд на постоянное место жительство? Какую страну выбрать? Возможно ли пройти собеседования за тысячи километров по телефону и получить джоб-офер? Как будет выглядеть переезд и жизнь в другой стране? В данной статье я бы хотел поделиться личным опытом и опытом многих моих друзей работающих за рубежом.
Читать дальше →
Всего голосов 208: ↑188 и ↓20+168
Комментарии160

Настройка SMS-шлюза Kannel

Время на прочтение5 мин
Количество просмотров64K
Несколько раз были упоминания такого замечательного софта как kannel, однако почему-то нет конкретных описаний примеров его интеграции. Здесь приводится пример сервиса, который можно реализовать при договоренности с оператором сотовой связи (опсосом), однако до сих пор не понятно каким образом это сделать. Попробую исправить эту ситуацию.
Читать дальше →
Всего голосов 26: ↑22 и ↓4+18
Комментарии26

Погружаемся в Docker: Dockerfile и коммуникация между контейнерами

Время на прочтение8 мин
Количество просмотров382K
В прошлой статье мы рассказали, что такое Docker и как с его помощью можно обойти Vendor–lock. В этой статье мы поговорим о Dockerfile как о правильном способе подготовки образов для Docker. Также мы рассмотрим ситуацию, когда контейнерам нужно взаимодействовать друг с другом.


В InfoboxCloud мы сделали готовый образ Ubuntu 14.04 с Docker. Не забудьте поставить галочку «Разрешить управление ядром ОС» при создании сервера, это требуется для работы Docker.
Читать дальше →
Всего голосов 34: ↑33 и ↓1+32
Комментарии23

Django 1.7

Время на прочтение1 мин
Количество просмотров21K
После почти года разработки вышел долгожданный релиз Django 1.7.
image
Ключевые изменения новой версии
  • Прекращена поддержка Python 2.6.
  • Добавлена поддержка миграций непосредственно в сам фреймворк. Здесь можно посмотреть инструкции о переходе с South.
  • Переработан механизм загрузки приложений. Теперь models.py — необязателен.
  • Изменения в Field API, в частности, добавлен обязательный метод deconstruct() для поддержки миграций.
  • Добавлена возможность вызова QuerySet напрямую из менеджера. Также теперь можно указывать необходимый менеджер при использовании связи между моделями.
  • Новая система для проверки проекта и диагностики ошибок, вместо validate добавлена команда check.
Читать дальше →
Всего голосов 47: ↑47 и ↓0+47
Комментарии11

10 потенциальных SQL ошибок, которые делают программисты

Время на прочтение6 мин
Количество просмотров233K
Оригинал статьи носит название «10 SQL ошибок, которые делают Java разработчики», но, по большому счёту, приведённые в ней принципы можно отнести к любому языку.



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

Но всё меняется, когда Java разработчики пишут SQL код.
Читать дальше →
Всего голосов 80: ↑54 и ↓26+28
Комментарии33

Избавляемся от строковых констант в Objective-C

Время на прочтение5 мин
Количество просмотров14K
Магические константы в коде — зло. Строковые константы в коде — еще большее зло.
И вроде бы от них никуда не денешься, они повсюду:

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, то ошибка вылезет не на стадии компиляции, а в рантайме, и отловить и исправить ее будет дольше и дороже.
Так что-же можно сделать?
Читать дальше →
Всего голосов 30: ↑26 и ↓4+22
Комментарии41

Как Яндекс распознаёт музыку с микрофона

Время на прочтение10 мин
Количество просмотров160K
Поиск по каталогу музыки — это задача, которую можно решать разными путями, как с точки зрения пользователя, так и технологически. Яндекс уже довольно давно научился искать и по названиям композиций, и по текстам песен. На сказанные голосом запросы про музыку мы тоже умеем отвечать в Яндекс.Поиске под iOS и Android, сегодня же речь пойдёт о поиске по аудиосигналу, а если конкретно — по записанному с микрофона фрагменту музыкального произведения. Именно такая функция встроена в мобильное приложение Яндекс.Музыки:

image

В мире есть всего несколько специализированных компаний, которые профессионально занимаются распознаванием музыкальных треков. Насколько нам известно, из поисковых компаний Яндекс стал первым, кто стал помогать российскому пользователю в решении этой задачи. Несмотря на то, что нам предстоит ещё немало сделать, качество распознавания уже сопоставимо с лидерами в этой области. К тому же поиск музыки по аудиофрагменту не самая тривиальная и освещённая в Рунете тема; надеемся, что многим будет любопытно узнать подробности.
Читать дальше →
Всего голосов 321: ↑313 и ↓8+305
Комментарии113

Стартап-ловушка

Время на прочтение4 мин
Количество просмотров78K
  • Вы присоединились к новому стартапу.
  • Вы мегаталантливое создание.
  • Вы можете работать 60, 70, 80 часов в неделю для достижения результата.
  • Вы офигенный разработчик и дизайнер.
  • Вы не попадетесь в ловушки, в которые попадались другие.
  • Вы убедитесь, что в этот раз все будет по-другому.
  • Вы настолько хороши, что правила вам ни к чему.
  • Вы в жопе.

Читать дальше →
Всего голосов 154: ↑110 и ↓44+66
Комментарии114

10 причин, по которым Вы бросите свою работу в 2013 году

Время на прочтение9 мин
Количество просмотров809K
imageЭто перевод нашумевшей статьи с TechCrunch от Джеймса Альтушера — инвестора, программиста, автора статей и немного предпринимателя. Его последние книги: Я был слеп, но теперь я вижу и 40 альтернатив колледжу. Читайте его в Twitter @jaltucher.

Люди читают TechCrunch потому, что они хотят что-то создать, они не желают следовать приказам всю жизнь и хотят финансовой свободы. Давайте начистоту. Эти три пункта кажутся притягательными. Да благословит Вас Бог. Надеюсь, что когда Вы их обретете, Вы сможете сохранить их. Большинству людей (например, МНЕ), нужно просто немного покататься на американских горках, потому что мы тупые. Но некоторые люди умные.
Читать дальше →
Всего голосов 287: ↑206 и ↓81+125
Комментарии391

Создание Warcraft (часть 3)

Время на прочтение18 мин
Количество просмотров67K
От переводчика

Я очень люблю игры компании Blizzard и, наткнувшись недавно на блог одного из из создателей серии Warcraft — Патрика Вайата, решил перевести третью заметку о создании первой части этой замечательной игры. Перевод первых двух (первая, вторая) уже есть на хабре.
Итак, вас ждёт рассказ об источниках финансирования Blizzard, о том, как Стю Роуз устроил дизайнерский переворот, о тумане войны и, самое главное, о впечатлениях автора статьи от самой первой мнопользовательской игры и о её неожиданных итогах.
За всем этим добро пожаловать за хабракат.
Это мой первый перевод, так что я буду рад всем сообщениям об ошибках, замечаниям и исправлениям.
Читать дальше →
Всего голосов 111: ↑109 и ↓2+107
Комментарии30

Миникомпьютер из роутера с OpenWRT: пишем USB class-driver под Linux

Время на прочтение20 мин
Количество просмотров78K

Добрый день, уважаемые хабровчане. В прошлой статье мы с вами разработали простую USB-видеокарту на базе STM32F103 и китайского дисплейного модуля на контроллере ILI9325.
Проверяли мы его из юзерспейса, при помощи LibUSB. Ну что ж, пришло время нам написать свой собственный драйвер, который позволит делать все то же самое, но из-под Linux и без дополнительных библиотек. Этот драйвер мы внесем в дерево исходников OpenWRT и он поселится там наравне со всеми остальными.
Начнем.
Читать дальше →
Всего голосов 124: ↑121 и ↓3+118
Комментарии32

Внутреннее устройство Git: хранение данных и merge

Время на прочтение9 мин
Количество просмотров87K
В процессе перехода с SVN на Git мы столкнулись с необходимостью переписывания наших внутренних инструментов, связанных с развёртыванием кода, которые ориентировались на существование линейной истории правок (и разработку в trunk). На Хабре уже публиковались возможные решения этой проблемы через Git-SVN, но мы пошли другим путём. Нам нужна поддержка таких возможностей Git, как branching и merge, поэтому мы решили разобраться в основах, как же работает Git и каким способом должна осуществляться интеграция с ним.
Читать дальше →
Всего голосов 77: ↑77 и ↓0+77
Комментарии10

Групповые сопротивления

Время на прочтение12 мин
Количество просмотров26K
Многие менеджеры в приватных беседах жалуются на сотрудников. Вроде бы и знающие специалисты, а работу не работают. Более того — часто отнимают время у тех, кто таки работает. Хоть увольняй.
Многие родители жалуются на что-то подобное в отношении детей. И тут уволить уже нельзя.
И сотрудники, и дети, часто действуют похожими способами. Реализация разная, а виды действий — схожие:

  • Привлечение внимания
  • Борьба за власть
  • Месть и личные нападки
  • Беспомощность
image
У каждого из этих видов есть свои формальные признаки и стандартные лекарства.
Читать дальше →
Всего голосов 85: ↑72 и ↓13+59
Комментарии53

Ошибки трансферта технологий №3 / «Ошибки оффшоров» + АПДЕЙТ

Время на прочтение18 мин
Количество просмотров9.3K
Оказывая помощь в выводе разработок и бизнесов на внешние зарубежные рынки, приходится постоянно наблюдать одни и те же ошибки, и как следствие — неудачи и потери.
Читать дальше →
Всего голосов 79: ↑72 и ↓7+65
Комментарии42

Монетизация и продвижение игры от независимых разработчиков

Время на прочтение6 мин
Количество просмотров31K
Я заканчиваю раскрывать внутреннюю кухню создания игры с точки зрения независимых разработчиков. В этой статье речь пойдёт о монетизации и продвижении игры. А также раскрою наши цифры по итогам первых двух недель после запуска и затраты на разработку.

Предыдущие статьи:


Читать дальше →
Всего голосов 36: ↑29 и ↓7+22
Комментарии34

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность