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

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

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

HTTP сервер за 15 минут

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

Задача


За минимальное время написать HTTP сервер, который после запуска сможет корректно ответить браузеру и отдать простую HTML страничку (минимальное время, чтобы кода было мало, чтобы новичку вникать было проще).
У меня это заняло около 15 минут. Сервер вроде справляется с поставленной задачей.

Суть примера — показать что такое Socket, ServerSocket, InputStream, OutputStream, и Thread.

смотреть исходники
Всего голосов 163: ↑124 и ↓39+85
Комментарии77

Как улучшить свой стиль программирования?

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

Исповедь 1


Я — разработчик. От своих работодателей я постоянно слышу, что работаю медленно и часто всё усложняю без веской причины. И что мне пора бы что-то с этим сделать. Во избежание.

Весь мой опыт программирования складывается из университетских работ и пары лет пребывания в различных компаниях. Критикующие меня люди неоднократно говорили мне, что в целом я разбираюсь в теме, так что я далеко не клинический случай, как можно было подумать. Однако, очевидно, я выработал совсем не те программистские привычки (как минимум, на взгляд работодателя) и мне нужно срочно изменить их. Везде, где бы я ни работал, мои решения, использующие иерархии мелких классов с делегированием поведения, признавались плохими. Говорят, будто так и надо писать, но это не так. Потому что всё это «как надо» может стоить мне работы.
Читать дальше →
Всего голосов 235: ↑202 и ↓33+169
Комментарии248

25+ видеоуроков по Android для начинающих

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

Приветствую вас, уважаемый хабрачеловек!
Предлагаю вашему вниманию бесплатно серияю видеоуроков в котрых рассмотренно базовые понятия разработки под Android.
Читать дальше →
Всего голосов 111: ↑108 и ↓3+105
Комментарии33

Делаем простейший фильтр по свойствам товаров с помощью ElasticSearch на Symfony2

Время на прочтение5 мин
Количество просмотров48K
Написать эту статью меня сподвигло отсутствие в интернете готового пошагового руководства «как реализовать фильтр товаров на ElasticSearch», а задача сделать это у меня стояла чётко и непоколебимо. Удавалось находить отрывочную справочную информацию, но никак не cookbook по решению самых тривиальных задач.

Акцентирую ваше внимание именно на symfony2, поскольку буду использовать FOSElasticaBundle, который позволяет описывать mapping индексов elasticsearch в удобных yaml конфигах и привязывать к ним сущности Doctrine ORM или документы Doctrine ODM. Промаппленные индексы заполняются из связанных доктриновских сущностей с помощью одной единственной консольной команды. Кроме того, он включает в себя вендорную библиотеку для конструирования поисковых и фильтрационных запросов. Результаты поиска возвращаются в виде массива объектов сущности или документа Doctrine ORM/ODM, привязанной к поисковому индексу. Подробнее о FOSElasticaBundle, традиционно, на гитхабе: github.com/FriendsOfSymfony/FOSElasticaBundle

Использование бандла позволяет полностью абстрагироваться от манипуляций с чистым JSON, что-то кодировать и декодировать функциями json_encode и json_decode, лезть куда-то с помощью сurl. Здесь только ООП подход!

Немного о схеме данных в SQL

Поскольку мои товары хранятся в реляционной СУБД, мне понадобилось реализовать EAV модель для их свойств и значений (подробнее: en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model )

В результате, у меня вышла вот такая схема данных:
image
Читать дальше →
Всего голосов 24: ↑24 и ↓0+24
Комментарии22

Рефакторить или не рефакторить?

Время на прочтение9 мин
Количество просмотров47K
Мне нравится рефакторинг. Нет, не так. Я люблю рефакторинг. Не, даже не так. Я чертовски люблю рефакторинг.
Я не переношу плохой код и плохую архитектуру. Меня коробит, когда я пишу новую фичу, а в соседнем классе творится полный бардак. Я просто не могу смотреть на печально названные переменные. Иногда перед сном я закрываю глаза и представляю, что можно было бы улучшить в проекте. Иногда я просыпаюсь в три часа ночи и иду к ноутбуку, чтобы что-нибудь поправить. Мне хочется, чтобы на любой стадии разработки код был не просто кодом, а произведением искусства, на которое приятно смотреть, с которым приятно работать.

Если вы хоть немного разделяете мои ощущения, то нам есть о чём поговорить. Дело в том, что со временем что-то внутри меня начало подсказывать, что рефакторить всё подряд, везде и всё время — не самая лучшая идея. Поймите меня правильно, код должен быть хорошим (а лучше бы ему быть идеальным), но в условиях суровой реальности не всегда разумно постоянно заниматься улучшением кода. Я вывел для себя несколько правил о своевременности рефакторинга. Если у меня начинают чесаться руки что-нибудь улучшить, то я оглядываюсь на эти правила и начинаю думать: «А действительно ли сейчас тот момент, когда нужно нарефакторить?». Давайте порассуждаем о том, в каких же случаях рефакторинг уместен, а в каких — не очень.

Читать дальше →
Всего голосов 72: ↑63 и ↓9+54
Комментарии66

Стартап шаг за шагом: команда и менторы

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


Мы продолжаем цикл статей о том, как построить стартап, где рассказываем о каждом шаге на собственном примере. В первой статье мы рассказали о том, как придумать идею, теперь поговорим о команде.
Читать дальше →
Всего голосов 45: ↑28 и ↓17+11
Комментарии8

Вариантность в программировании

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

До сих пор не можете спать, пытаясь осмыслить понятия ковариантности и контравариантности? Чувствуете, как они дышат вам в спину, но когда оборачиваетесь ничего не находите? Есть решение!


Меня зовут Никита, и сегодня мы попытаемся заставить механизм в голове работать корректно. Вас ожидает максимально доступное рассмотрение темы вариантности в примерах. Добро пожаловать под кат.

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

Паттерн HMVC в веб-разработке

Время на прочтение5 мин
Количество просмотров41K
Изучая планы развития CMS Joomla, для написания одной из своих предыдущих статей (укр.), я наткнулся на аббревиатуру HMVC. Не сложно было понять, что это как-то связано со ставшим стандартом паттерном MVC. Найденная расшифровка: «HMVC — иерархические модель-вид-контроллер» — мало что объяснила. Дальнейшие поиски информации тоже дали не много, в основном теоретические рассуждения о паттерне и почти ничего о том, как же его использовать на практике. Однако немного поразмыслив, я понял, что уже использовал его в своем предыдущем проекте на Symfony 2. Более того, оказывается, что частично этот паттерн используют очень многие даже не догадываясь об этом.
Читать дальше →
Всего голосов 20: ↑13 и ↓7+6
Комментарии63

Контрактное программирование в PHP

Время на прочтение8 мин
Количество просмотров32K
Контрактное программирование В реальной жизни мы повсюду сталкиваемся с различными контрактами: при устройстве на работу, при выполнении работ, при подписании взаимных соглашений и многими другими. Юридическая сила контрактов гарантирует нам защиту интересов и не допускает их нарушения без последствий, что дает нам уверенность в том, что те пункты, которые описаны в контракте — будут выполнены. Эта уверенность помогает нам планировать время, планировать расходы, а также планировать необходимые ресурсы. А что если и программный код будет описываться контрактами? Интересно? Тогда добро пожаловать под кат!
Читать дальше →
Всего голосов 55: ↑43 и ↓12+31
Комментарии63

Открытый код борьбы с коррупцией (и не только)

Время на прочтение5 мин
Количество просмотров70K
update (10.06.2014): Алексей опубликовал отчет ФБК за 2013й год, сослался на этот пост и обещал доделать систему в 2014м. И это круто. Хабр — сила.

Введение


Я должен был написать этот пост примерно год назад. В конце 2012го года, будучи директором Фонда Борьбы с Коррупцией, я, в числе других сотрудников фонда, организовывал второй фандрайзинг на РосПил, где мы сделали ряд обещаний касающихся разработки информационной системы Фонда, за которые давно следовало отчитаться.

РосПил — это первый действительно успешный общественный проект в России, логотип которого, кстати, придумал анонимный пользователь Хабра, а сайт на руби также бесплатно сделал Павел Сенько. Суть проекта — проведение формальных юридических расследований подозрительных закупок с zakupki.gov.ru путем обращения в госорганы и придания гласности результатам.

image

Одна из идей которую я активно продвигал в Фонде — большая прозрачность и автоматизация работы юристов. Хотелось отказаться от использования гуглдоков для публикации документов, вместо этого загружая их в специальную систему, где будет отслеживаться связь запросов и ответов на них, а также принадлежность документов одному «делу». Таким образом, не получится забыть ни о каких делах, всегда будет видно, что всё доведено до конца и не брошено. Появится место, где можно в удобном и доступном виде посмотреть на деятельность всего Фонда и каждого юриста в исторической перспективе.

Именно поэтому в просьбу денег (рабочая ссылка на полную презентацию, см. слайд 25) было включено создание такой информационной системы. А также обещание раскрыть ее для других юристов и организаций. Фандрайзинг был успешен, собрали более десяти миллионов рублей и такую систему ФБК действительно разрабатывал под моим руководством в качестве директора фонда и менеджера продукта. Порядка миллиона рублей на это было потрачено и я чувствую себя обязанным официально поделиться сделаным на общественные (ваши) деньги. Весь код и дизайны лицензированы по открытой лицензии Creative Commons (Attribution-NonCommercial-ShareAlike 4.0 International), что отражено в договорах с Фондом подписанных Алексеем.

Вот такой у меня есть тизер о том что получилось, чтобы вам стало интересно почитать дальше. Ниже опубликован исходный код, все дизайны, описаны основные сущности и планы развития системы. И, конечно, благодарности авторам.

image
Читать дальше про дизайн, код, планы и всё остальное
Всего голосов 336: ↑304 и ↓32+272
Комментарии165

Серьезное проектирование серьезного магазина. Часть 2. Модули интернет-магазина

Время на прочтение15 мин
Количество просмотров80K
В прошлый раз мы написали довольно популярную статью: «Серьезное проектирование серьезного магазина. Часть 1. Исследования», эта статья её логическое продолжение. В этой статье и в последующих мы опишем почти 60 функциональных модулей топовых интернет-магазинов мира, а также подробно разберем интерфейс многих страниц.

Главная страница интрнет-магазина в axure
Читать дальше →
Всего голосов 69: ↑47 и ↓22+25
Комментарии23

Мифы о программистах: равнодушие к стриптизёршам, пельмени и управляемый хаос

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


Не секрет, что любая профессия обрастает неким количеством мифов, которые кажутся убедительными для тех, кто далёк от темы. В IT одной из самых мифологизированных стала профессия программиста. Мы собрали известные нам мифы о программистах и проверили их на правдивость. Для этого провели опрос среди технических специалистов нашей компании (78% из которых программисты) о том, какого стиля жизни они придерживаются.
Читать дальше →
Всего голосов 179: ↑104 и ↓75+29
Комментарии124

Язык программирования Swift. Русская версия

Время на прочтение17 мин
Количество просмотров378K
imageПривет, Хабр! 2 июня все мы воочию могли наблюдать, как компания Apple начала творить революцию в стане Objective-C разработчиков, представив миру свой новый язык программирования – Swift. Вместе с этим, она выложила в открытый доступ небольшую документацию по языку, которую мы решили перевести, если на то будет спрос. Предлагаем вашему вниманию перевод первой главы. Если тема будет интересна, то мы продолжим публиковать перевод каждую неделю.
Читать дальше →
Всего голосов 117: ↑103 и ↓14+89
Комментарии51

Полезные материалы для мобильного разработчика #57 (8-15 июня)

Время на прочтение3 мин
Количество просмотров15K
На этой неделе мы продолжили изучать Swift, вышла русская версия отчета о разработке приложений для «подключенных» автомобилей, Apple начала пока не совсем понятную борьбу с поощрением просмотра рекламы и социальных постов в приложениях, Samsung объявил конкурс приложений для Tizen с призовым фондом в 7 млн рублей. Кроме того, в дайджесте я стал учитывать рейтинг постов — теперь вы можете видеть их популярность прямо в списке.

image
Читать дальше →
Всего голосов 33: ↑28 и ↓5+23
Комментарии0

MongoDb for developers. Неделя 2

Время на прочтение7 мин
Количество просмотров15K
Доброе время суток, хабр. Этот топик — продолжение цикла статей, основанных на материалах онлайн курса M101 от 10gen. Поскольку вторая неделя является одной из самых насыщенных, она будет разбита на две статьи.
Добро пожаловать под кат
Всего голосов 28: ↑24 и ↓4+20
Комментарии3

30 полезных сервисов для веб-разработчика

Время на прочтение2 мин
Количество просмотров163K
Решил собрать сервисы, которые могут быть полезны веб-разработчикам и дизайнерам. Буду рад, если кто-то найдет для себя полезный сервис. Осторожно, под катом куча картинок!
Читать дальше →
Всего голосов 180: ↑156 и ↓24+132
Комментарии48

Дайджест интересных новостей и материалов из мира PHP № 41 (май 2014)

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


После небольшого перерыва PHP-дайджест снова в деле! Вашему вниманию подборка со ссылками на новости и материалы.

Приятного чтения!
Читать дальше →
Всего голосов 79: ↑69 и ↓10+59
Комментарии9

Комиксы по сетевому творчеству Юрия Нестеренко (aka YuN) — почему глючат программы

Время на прочтение1 мин
Количество просмотров35K
Наткнулись недавно на винрарную подборку шуток про баги, авторства небезызвестного Юрия Нестеренко (который YuN). Подумали — а почему бы не нарисовать комиксы по ним? Пока осилили где-то половину, но выкладываем, что есть.


Читать дальше →
Всего голосов 166: ↑102 и ↓64+38
Комментарии36

Опасный getimagesize() или Zip Bomb для PHP

Время на прочтение6 мин
Количество просмотров44K
Рекурсия

В Питер снова пришла осень, и рабочее настроение, которое подвергалось постоянной атаке солнечной радиации вот уже целую неделю, решило, что с него хватит, и улетело в ещё не задраенную форточку.

«Отлично, — подумал я, — самое время поковырять какой-нибудь движок, пока оно не вернулось!»

Сказано — сделано. Под катом предлагаю небольшой обзор уязвимости в распространённом движке фото-галереи на PHP и о том, как можно положить любой сайт, использующий getimagesize(), с помощью бородатой zip-бомбы (или пета-бомбы).
А что там дальше, за рамкой-то?
Всего голосов 125: ↑117 и ↓8+109
Комментарии101

Встречайте AppCode 3.0: встроенный дизайнер UI, плагин для Reveal и многое другое

Время на прочтение4 мин
Количество просмотров30K
Привет, Хабр! Мы спешим вас порадовать новой, только что выпущенной версией нашей IDE для разработчиков под iOS/OS X — AppCode 3.0. Внутри много интересного: от долгожданного встроенного дизайнера UI до большого сюрприза в виде интеграции с Reveal. Но — обо всем по порядку.

Дизайнер UI


Мы шли к нему довольно долго. Кто-то из вас мог даже попробовать самую первую версию нашего UI-плагина еще в декабре прошлого года. И вот теперь мы рады сообщить, что в AppCode 3.0 появился свой встроенный дизайнер UI. Он поддерживает как формат .xib, так и .storyboard, и дает вам возможность полностью разрабатывать UI вашего приложения в AppCode. Вам доступна вся палитра элементов из iOS SDK, удобная навигация по дереву компонент, всевозможные настройки внешнего вида и поведения элементов UI и, конечно, возможность создавать методы для обработки поведения визуального элемента в один клик.


Читать дальше →
Всего голосов 69: ↑68 и ↓1+67
Комментарии68

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность