Pull to refresh
0
0
Александр Ганский @gandi

User

Send message

20 вещей, которые я должен был знать в 20 лет

Reading time3 min
Views717K
1. Мир пытается оставить тебя тупым. Начиная от банковских платежей и процентов и заканчивая чудо-диетами — из необразованных людей легче вытрясти деньги и ими проще управлять. Занимайтесь самообразованием столько, сколько можете — для того, чтобы быть богатым, независимым и счастливым.
Читать дальше →
Total votes 544: ↑445 and ↓99+346
Comments544

Чем платят за успех IT-специалисты

Reading time2 min
Views11K
Очень часто в историях успеха забывают указать один очень важный момент. А именно, какую цену платит человек за свой успех. Область IT имеет повышенный интерес к этой тематике. Так как, даже находясь дома, человек работает на компьютере удалено. Можно тратить все свое время на работу, на продвижение своего бренда, сервиса, однако ваша семья думает об этом иначе.



Читать дальше →
Total votes 193: ↑143 and ↓50+93
Comments461

Sypex Geo — быстрое определение города по IP

Reading time3 min
Views117K
В начале года я публиковал статью Определение страны по IP: тестируем скорость алгоритмов, в которой упоминался мой «велосипед» отличающийся высокой скоростью работы. Одним из популярных вопросов стала возможность определения города по IP.

И вот несколько месяцев спустя, проект начинавшийся, как «for fun» перерос в самостоятельный проект.
Открыт отдельный сайт посвященный проекту Sypex Geo, на котором можно скачать свежие версии API и баз данных, а также ознакомиться с документацией.

Для желающих скорее протестировать правильность определения города по IP — вот ссылка на демо-страницу. А под хабракатом, я опишу некоторые технические подробности и приведу результаты небольшого тестирования.
Читать дальше →
Total votes 68: ↑67 and ↓1+66
Comments84

MongoDB: производительность запросов на диапазонах

Reading time3 min
Views15K
Если вы путешествовали по территории индексов MongoDB, вы возможно слышали принцип: Если ваши запросы содержат сортировку, то добавте сортированное поле в конец индекса который используется в этих запросах.

Во многих случаях когда запросы содержат условия равенства как например {“name”: “Charlie”}, принцип который выше очень полезен. Но что о нем можно сказать со следующим примером:

Запрос:
db.drivers.find({"country": {"$in": ["A", "G"]}).sort({"carsOwned": 1})
Индекс:
{"country": 1, "carsOwned": 1}

Эта связка является не эффективной, хотя принцип соблюдается. Потому что тут есть ловушка в которую вас может привести этот принцип.
Ниже мы рассмотрим причины возниконвения этой ловушки и к концу статьи вы будете иметь новое правило которое будет вам помогать при индексировании.
Читать дальше →
Total votes 35: ↑26 and ↓9+17
Comments15

Где взять программиста

Reading time5 min
Views10K
Данный топик написан мной по результатам общения с представителями IT компаний, которые, заинтересовавшись циклом статей про студенческие проекты, приехали на Мат-мех в поисках людей, которых можно было бы нанять к себе в компанию. В результате найм несколько не удался, поскольку по словам нанимателей “брать на работу программистов из студенческих проектов можно только по географическому признаку”. Похоже проблема подбора квалифицированных кадров существует и стоит довольно остро. Я попытался раскрыть свои мысли по поводу того, где брать программистов или как их выращивать.
Читать дальше →
Total votes 77: ↑61 and ↓16+45
Comments46

Кормление и уход за разработчиками (или почему мы такие ворчуны)

Reading time22 min
Views28K
Прим. переводчика — В оригинале использовался всем знакомый термин «software engineer». Так как русский его аналог «инженер-программист» используется в повседневной речи редко, пришлось использовать слово «разработчик» как наиболее близкое. Также профессия «short-order cook», с которой автор сравнивает положение многих разработчиков в индустрии, была переведена как «мальчик на побегушках» — мне кажется, что она отлично отражает суть проблемы отношения к разработчикам. Наконец, я старался везде вместо слов «to code» и «programming» использовать «разрабатывать» и «разработка» из-за сложившемся в русском языке негативном смысле слов «кодировать» и «программирование» как примитивных процессов перевода требований в машинные инструкции низкого или высокого уровня.

Автор оригинальной статьи — Nickolas C. Zakas, известный фронтенд разработчик и JavaScript-евангелист в свое время проработавший более пяти лет в Yahoo. Это запись из его блога, в которой он говорит о том, почему с разработчиками так сложно договориться и что с этим делать.


Не так давно Дженна Байлотта написала замечательную статью «Как дизайнерам ужиться с разработчиками», в которой она описывает методы работы в команде, позволяющие дизайнерам и разработчикам добиться лучшей производительности. Я в свое время работал с дизайнерами (а, работая в UI, и с разработчиками) и столкнулся с похожими проблемами, так что мне понятен ее практичный подход. Во время командной работы никогда не помешает уважать труд своих коллег и понимать их способ мышления.

Одна из главных мыслей той статьи заключалась в том, что разработчики говорят «нет» слишком быстро. Эта мысль тут же въелась мне в мозг и долго отказывалась вылезать оттуда. Мне хотелось воскликнуть: «Но подожди, ты же не понимаешь, почему мы говорим „нет“!». Тут же появился миллион других защитных аргументов. На самом деле она, конечно, права — мы правда слишком быстро говорим «нет», причем не только дизайнерам, а вообще всем. Это побудило меня поразмыслить над психологией разработчиков и тем, что составляет нашу истинную суть.
Читать дальше →
Total votes 242: ↑228 and ↓14+214
Comments76

“Книжная полка хакера” — библиотека бесплатной компьютерной литературы

Reading time1 min
Views13K
Сайт Hackershelf.com — коллекция официально бесплатных электронных книг компьютерной тематики. Библиотека наполняется сообществом — зарегистрированные пользователи могут добавлять книги и редактировать информацию о существующих. В ней уже больше двухсот наименований книг, есть поиск по категориям и популярности.

Total votes 56: ↑48 and ↓8+40
Comments10

Развитие образного мышления

Reading time3 min
Views68K
image

Пламенный привет, дорогие хабравчане!

В своей дебютной статье я хочу рассказать вам об упражнениях-играх на развитие образного мышления, которые будут полезны не только людям творческих профессий: в отличие от упражнений на развитие воображения, в которых идет доминирование правого полушария, прокачка образного мышления активно задействует аналитические способности, а это уже симбиоз двух полушарий. Поэтому эти упражнения прекрасно подойдут не только для получения каких-либо плодов для людей, чья работа хоть как-то связана с образной информацией, но и любому человеку, который хочет иметь острый ум и налаженное взаимодействие обоих полушарий мозга.
Читать дальше →
Total votes 132: ↑119 and ↓13+106
Comments83

Google представил сервис Coordinate для управления мобильными работниками

Reading time3 min
Views12K
Приложения и сервисы, основанные на геопозиционировании, такие как Foursquare, приобрели значительную популярность за последние несколько лет, но большинство новейших разработок в области геолокационных приложений обошли вниманием бизнес-сферу. Хоть сейчас и существует несколько сервисов, позволяющих работодателям отслеживать перемещения их сотрудников, они, как правило, проприетарные и весьма дороги. Сегодня Google пытается выйти на бизнес-рынок используя Google Maps Coordinate, объединяющий карты Google и геолокационный сервис с API и диспетчерской системой для координации работников. Этот сервис доступен как в веб-версии, так и в версии для телефонов и планшетов Android. По словам Google, система позволит организациям более эффективно выдавать рабочие задания и территориально распределять свой персонал.

По сути, Coordinate позволяет компаниям удаленно руководить своими мобильными сотрудниками и отслеживать их передвижения, будь то дальнобойщики или водители такси, водопроводчики или курьеры по доставке пиццы. В компании Google тестировали этот сервис внутри их собственной службы перевозок.

Читать дальше →
Total votes 37: ↑35 and ↓2+33
Comments17

Карты в Вашем проекте

Reading time3 min
Views6.5K
Рост аудитории интернет-пользователей и интернет-проектов выводит геосервисы на новый уровень.
Если раньше большинство проектов с использованием «карт» оперировали с десятками и сотнями точек, то сейчас уже речь идет о сотнях тысяч точек.
В статье будут рассмотрены несколько юзкейсов для геосервисов и способы их реализации для google API 3 и нового yandex API 2.
Читать дальше →
Total votes 21: ↑17 and ↓4+13
Comments8

DroidParts — библиотека для Android 8-in-1

Reading time3 min
Views5.1K
Этой статьёй я открываю цикл, посвящённый разработке Android-приложений. Но не типичных для Google Play, написанных, очевидно, задней левой mНогой, а приложений корректных и элегантных. В этом деле нам поможет DroidParts — швейцарский нож Android-библиотек с 8 лезвиями:

  1. Dependency Injection: инициализация системных и собственных зависимостей;
  2. Object-Relational Mapping для SQLite: CRUD-операции «из коробки»;
  3. Поддержка Fragments, ActionBarSherlock;
  4. Простая (де-)сериализация JSON;
  5. AsyncTasks, IntentService с обработкой Exсeptions;
  6. RESTful HTTP client с поддержкой JSON;
  7. L.og без указания тега, конфигурируемый через AndroidManifest;
  8. Утилиты типа асинхронного http-загрузчика с кешированием, View- и Intent-помощников.


Буквально час назад* увидела свет первая версия библиотеки, но сначала…
Читать дальше →
Total votes 56: ↑47 and ↓9+38
Comments45

Моделирование данных в MongoDB

Reading time5 min
Views60K
imageОдна из самых разрекламированных фич MongoDB — это гибкость. Я сам не раз подчеркивал это в бесчисленных разговорах о MongoDB. Однако, гибкость — это палка о двух концах: большая гибкость подразумевает более широкий выбор решений для моделирования данных. Тем не менее, мне нравится гибкость, которую предоставляет MongoDB, просто нужно иметь ввиду некоторые рекомендации, прежде чем начать разрабатывать модель данных.

В этой статье мы рассмотрим, как смоделировать структуру, содержащую списки рассылок и данные о людях, которые входят в эти списки.
Читать дальше →
Total votes 51: ↑50 and ↓1+49
Comments44

Вышел Linux Mint 13 «Maya»

Reading time1 min
Views23K
Позавчера было объявлено о выходе новой версии популярного Linux-дистрибутива для настольных ПК, основанного на Ubuntu Linux, — Linux Mint 13 под кодовым названием «Maya».

В качестве основных графических оболочек Linux Mint 13 предоставляет своим пользователям свой «фирменный» Cinnamon 1.4, основанный на GNOME 3 и Clutter, и MATE 1.2, продолжающий развитие традиционного рабочего окружения GNOME 2. Последний релиз Linux Mint основан на недавнем релизе Ubuntu — 12.04 «Precise Pangolin», — благодаря чему получил статус LTS и будет поддерживаться до апреля 2017 года.

Читать дальше →
Total votes 22: ↑18 and ↓4+14
Comments19

Использование делегата для получения данных из AsyncTask

Reading time2 min
Views1.7K
Всем привет!

Хочу поделится одним маленьким трюком для начинающих андроидописателей. Этот трюк стар как мир и сам я раньше многократно им пользовался, но поскольку основная моя работа с андроидом никак не связана, то за давностью лет я его подзабыл и вот на днях был вынужден его срочно вспоминать.
Читать дальше →
Total votes 16: ↑13 and ↓3+10
Comments17

GitHub выпустил клиент для Windows

Reading time1 min
Views48K
Всегда хотели найти более простой способ для работы с git и github на своей windows машине? Боялись командной строки и генерации ssh ключей через putty? Хотите присоединиться к огромнейшему сообществу разработчиков в мире?

Сегодня github анонсировал свой клиент для Windows, который можно использовать прямо из коробки.

Клиент написан на C#, работает на Windows XP, Vista, 7 и пре-релизе Windows 8. Прямо в установку включена инсталляция msysGit (git для win машин). Вливайтесь!
Читать дальше →
Total votes 125: ↑116 and ↓9+107
Comments177

Как создать видео-проигрыватель на JQuery, HTML5 и CSS3

Reading time6 min
Views34K
image

В этом уроке мы будем создавать видео плеер, для этого будем использовать CSS3 для моделирования и библиотеку «MediaElement.js» для функциональности. MediaElement.js это HTML5 аудио и видео плеер, который работает в старых браузерах имитируя MediaElement HTML5 API с помощью Flash и Silverlight.

Демонстрационный вариант
Исходные файлы
Читать дальше →
Total votes 70: ↑61 and ↓9+52
Comments35

Правила разработки сложных систем. История одного проекта

Reading time8 min
Views18K
Привет, Хабр. Меня зовут Александр. И я хочу поделится своей историей работы над одним крупным и сложным проектом.

В этой статье не будет кода и схем, в ней будет только история создания «от и до» самого проекта. Думаю, многим будет интересна данная статья. Итак, поехали!

Начало


Все началось летом 2011. На тот момент я был 3 года чистокровным фрилансером. То есть моя работа — это фриланс. Работал и работаю до сих пор только с западными заказчиками. Основная специализация — разработка проектов связанных с распознаванием образов, текста и т.д.

Все началось с того, что я, как всегда, с утра проверял почту, чистил спам, занимался рутинной работой. Обычно я не смотрю, что у меня в спаме, но тут я увидел письмо, с вполне реального адреса. Я открыл письмо, в котором одна компания искала программиста для допиливания крупного западного проекта. Причем эта компания требовала программиста именно из моего города и обязательно с опытом работы в области распознавания. Я ради любопытства ответил на это письмо. Буквально через час мне пришел ответ. А через два мы уже созвонились с менеджером проекта. Поначалу мне показалось, что ничего сложного в доработке нет, обычный набор функционала. После непродолжительного разговора с менеджером я огласил свой прайс, то есть ставку в час. И на этом мы попрощались. На следующий день мне сказали, что согласны на мой ценник и дали тестовое задание. Я его успешно выполнил в течении часа, и мы двинулись дальше. А здесь начинается самое интересное. Во-первых, меня пригласили в офис для того, чтобы подписать договор о неразглашении (Non-Disclosure Agreement). Во-вторых, и это логично, исходники проекта мне обещали отдать только после подписания договора. Если честно, меня это смутило, не знаю даже почему. И интуиция меня не подвела. Я потребовал хотя бы часть исходного кода, чтобы оценить сложность работы и попросил рассказать подробнее о проекте. Как оказалось проект на тот момент велся уже три года и я был 4 (!) исполнителем. До меня работала американская компания, потом индусы, потом компания, которая наняла меня, пыталась реализовать проект силами одной девочки-программиста, а потом это все чудо предложили разгребать мне. Меня это не просто удивило, а очень насторожило. Потом я узнал множество удивительных вещей, например о том, что заказчик 2 года не видел программу, а видел только скриншоты, а индусы кормили обещаниями этого заказчика. У меня не укладывалось в голове, как такое можно реализовать. Менеджеру индусов надо дать медаль «За находчивость».

После того как я выслушал удивительную историю, мы договорились с менеджером о том, что он мне отдаст исходный код и я оценю масштаб трагедии. Чтобы было более понятно, я расскажу более подробно о проекте. Этот проект — это инструмент для инженеров, архитекторов, электриков и других людей, которые занимаются строительством домов, небоскребов, одним словом зданий. Он служит для подсчета различных элементов на строительных планах, расчета площадей, измерения длин и составления смет. Грубо говоря есть строительный план и на нем есть розетки. Нам надо распознать и посчитать сколько этих розеток. Для распознавания использовалась библиотека написанная другим программистом. Сам проект написан на C#. Моя задача была собрать все воедино и доработать дополнительный функционал, а также привести программу к более менее стабильному состоянию. Кажется все просто и элементарно. Я тоже так подумал. Но не тут-то было.

После того как я получил исходники, я попытался скомпилировать проект. Это мне не удалось. После краткого анализа, я исправил ошибки и все же запустил проект. Но, к сожалению, он не заработал так как нужно. После нескольких часов анализа кода я пришел к выводу, что вся проблема в библиотеке распознавания. На тот момент у меня стояла 64-битная «семерка», а у менеджера 32-битная. У него все работало, у меня нет. Я попросил, что бы мне скомпилировали библиотеку под 64-битную платформу. Но разработчик библиотеки с пеной у рта доказывал, что не в разрядности дело. Я не мог ему ничего доказать, так как он дал очень немного информации о своей библиотеке и вообще берег ее как зеницу ока. Время шло и мне надо было хотя бы полностью провести процесс поиска. Я плюнул на все и поставил себе 32-х битную версию ОС. И о чудо! Все заработало. Отвлекаясь, хочу сказать о библиотеке, в будущем дело все же оказалось в ее разрядности.

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

1. Компоненты и контролы.

Проект очень сильно связан с графикой, но для ее вывода и обработки использовался обычный PictureBox. Самый маленький размер плана — 5400x3600 пикселей. Знающие люди поймут, что для PictureBox -это достаточно проблематичная тема с выводом больших картинок и их обработкой. Не стоит забывать, что помимо самих планов выводится еще много информации (площади, текст, найденные символы и т.д.). При запуске проекта с 5 маленькими планами, программа непременно падала с ошибкой «Out of memory». Что было очень большой проблемой, так как основной задумкой было то, что инструмент должен был работать по принципу «запустил и забыл».

2. Логика архитектуры исходного кода программы.
Читать дальше →
Total votes 122: ↑102 and ↓20+82
Comments97

SQL Server 2012 — что нового для разработчика?

Reading time3 min
Views38K
1 апреля 2012 г. стала доступна финальная версия Microsoft SQL Server 2012.
В новой версии появилось большое количество нововведений.
В данной статье я хотел бы подробнее остановиться на обзоре ряда новшеств для разработчика баз данных.
Читать дальше →
Total votes 38: ↑35 and ↓3+32
Comments32

ORM в Android c помощью ORMLite

Reading time7 min
Views72K
На данный момент для платформы Android существует несколько решений, позволяющих реализовать ORM-подход для работы с базой данных, но основных два. Это ORMLite и GreenDAO.

Для новичков стоит сделать отступление и рассказать что такое ORM вообще. ORM — object-ralational mapping. Объектно-реляционное отображение означает, что программисту гораздо удобнее оперировать с объектами, которые он использует в своём приложении, нежели чем с таблицами, в которых хранятся данные в реляционных базах данных. Для связи реляционных СУБД с объектной моделью приложения используются ORM-технологии. Так для решения задач объектно-реляционного отображения в Android используют один из сторонних фреймворков. GreenDAO и ORMLite — являются библиотеками с открытым кодом.
Читать дальше →
Total votes 21: ↑18 and ↓3+15
Comments19

Mobiscroll — кастомный select для мобильных сайтов и не только

Reading time1 min
Views6.3K

К каждому, кто сталкивался с разработкой сайтов под iOS/Android/etc (или native-приложений через phonegap и иже с ним), рано или поздно наверняка приходило осознание того факта, что стандартные управляющие элементы форм не очень удобны для работы с touch-экранов.

И если input'ы и textarea вполне можно отрисовать с помощью css, то с селекторами ситуация гораздо более грустная — и не улучшить особо, и выбирать, например, дату, последовательным выбором трех выпадающих списков — занятие не из приятных.
Помогает в решении этой проблемы мультиплатформенный (обещают как минимум работу на iOS/Android, но с некоторыми помарками работает и на MeeGo — это из проверенного собственноручно) select-заменитель Mobiscroll, с некоторым трудом нагугленный мной пару недель назад.

Читать дальше →
Total votes 27: ↑26 and ↓1+25
Comments13

Information

Rating
Does not participate
Location
Харьковская обл., Украина
Registered
Activity