Pull to refresh
21
0
Кирилл Сидоров @cyberia

User

Send message

Что такое красивый код, и как его писать?

Reading time22 min
Views208K

1. Вступление


Сталкиваясь с необходимостью контролировать работу других программистов, начинаешь понимать, что, помимо вещей, которым люди учатся достаточно легко и быстро, находятся проблемы, для устранения которых требуется существенное время.

Сравнительно быстро можно обучить человека пользоваться необходимым инструментарием и документацией, правильной коммуникации с заказчиком и внутри команды, правильному целеполаганию и расстановке приоритетов (ну, конечно, в той мере, в которой сам всем этим владеешь).

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

Профессии программиста, как и большинству других профессий, приходится учиться каждый день в течение нескольких лет, а, по большому счету, и всю жизнь. Вначале ты осваиваешь набор базовых знаний в объеме N семестровых курсов, потом долго топчешься по различным граблям, перенимаешь опыт старших товарищей, изучаешь хорошие и плохие примеры (плохие почему-то чаще).

Говоря о базовых знаниях, надо отметить, что умение писать красивый профессиональный код — это то, что по тем или иным причинам, в эти базовые знания категорически не входит. Вместо этого, в соответствующих заведениях, а также в книжках, нам рассказывают про алгоритмы, языки, принципы ООП, паттерны дизайна…

Да, все это необходимо знать. Но при этом, понимание того, как должен выглядеть достойный код, обычно появляется уже при наличии практического (чаще в той или иной степени негативного) опыта за плечами. И при условии, что жизнь “потыкала” тебя не только в сочные образцы плохого кода, но и в примеры всерьез достойные подражания.

В этом-то и заключается вся сложность: твое представление о “достойном” и “красивом” коде полностью основано на личном многолетнем опыте. Попробуй теперь передать это представление в сжатые сроки человеку с совсем другим опытом или даже вовсе без него.

Но если для нас действительно важно качество кода, который пишут люди, работающие вместе с нами, то попробовать все же стоит!
Читать дальше →

Семь принципов создания современных веб-приложений

Reading time19 min
Views188K
Эта статья основана на моей презентации с конференции BrazilJS в августе 2014 года. Она базируется на идеях, о которых я писал в блоге недавно, в основном, в связи с UX и производительностью.

Я хочу представить 7 действенных принципов для веб-сайтов, которые хотят применить JavaScript для управления UI. Эти принципы являются результатом моей работы как веб-дизайнера, но также как давнего пользователя WWW.

JavaScript бесспорно стал незаменимым инструментом для разработчиков фронтенда. Сейчас сфера его применения расширяется на другие области, такие как серверы и микроконтроллеры. Этот язык программирования выбрали престижные университеты, чтобы обучать студентов основам информатики.

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

  • Должен ли JavaScript использоваться как замена функциям браузера: история, навигация, рендеринг?
  • Умирает ли бэкенд? Нужно ли вообще рендерить HTML?
  • Правда ли, что будущее за приложениями на одной странице (Single Page Applications, SPA)?
  • Должен ли JS генерировать страницы на веб-сайте и рендерить страницы в веб-приложениях?
  • Нужно ли использовать техники вроде PJAX или TurboLinks?
  • Каково точное отличие между веб-сайтом и веб-приложением? Должно ли остаться что-то одно?
Читать дальше →

Изначально ущербная система подготовки к переговорам

Reading time6 min
Views117K


Проблема в том, что в любом традиционном обучении переговорам предполагается, что стороны должны в итоге договориться.

Когда я учился в Кейптауне, этот баг в сознании моих коллег вскрылся почти сразу. Даже ушлые арабы, подготовленные торговаться, резко сдавали назад, когда понимали, что результата может и не быть вообще. Европейцев же это выносило просто наповал.

Давайте ещё раз. Бывают хорошие условия, бывают нормальные, бывают плохие. Одни можно превратить в другие. Но если вы понимаете, что из плохих условий не сделать нормальные, то единственный логичный выход – остановить переговоры как можно быстрее. Вам не нужны компромиссы, странные пути решения и долгие разговоры. Вам нужно встать и уйти.
Читать дальше →

Превосходство Маска. О магии «Мерлина» замолвим слово

Reading time8 min
Views152K

«Нет двигателя — и любая самая совершенная конструкция ракеты со всей ее начинкой мертва» В. П. Глушко

В последние годы, частная космическая компания Space X, возглавляемая Элоном Маском, не перестает удивлять весь мир своими фантастическими успехами. Основной изюминкой космических транспортных систем этой компании считаются РН серии Falcon, и в частности двигатели Merlin 1, уже прозванные «самыми эффективными в мире».

Создается ложное впечатление, будто Space X в относительно короткий срок смогла создать двигатель, затмивший разработки в этой области таких гигантов как «Энергомаш» и «Rocketdyne». Под катом мы в популярной форме ознакомится с современным миром ракетных двигателей и постараемся разобраться в такой не однозначной их характеристике как эффективность.
Читать дальше →

Суперлуние, Персеиды и прочие астрономические интересности

Reading time4 min
Views191K


Август — очень популярный месяц для астрономических наблюдений — небо постепенно становится более темным, ночи удлиняются, но ещё не вступает в свои права облачная и дождливая осень, и температура все ещё комфортна для нахождения под открытым небом. Какие астрономические события ждут нас во второй половине года?
Читать дальше →

Почти случившиеся космические катастрофы, часть 2

Reading time13 min
Views152K


Продолжаем рассказ о космических катастрофах, которые были предотвращены предусмотрительностью конструкторов ракетной техники, напряженной работой ЦУПа, решительностью и высокой подготовкой экипажей, или же простой удачей.
Читать дальше →

Теория сложности на простых примерах

Reading time5 min
Views22K
Задайтесь вопросом «ГДЕ?». Где находится центр управления движением галактик или поведением циклона? Где та сила, что объединяет атомы в сложные соединения, те в свою очередь — в цепочки белков, и порождает такие устойчивые и сложные явления как биологическая жизнь, разум, социум.

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

Chatroulette своими руками — 50 строк кода

Reading time1 min
Views28K
image
Пару месяцев назад я приглашал всех на веб-семинар о p2p во Flash, но сделал это слишком поздно, поэтому наверняка большое количество желающих на него не попало. Самое ценное, что я извлек из этого семинара — то, что peer-to-peer приложения во Flash делать очень легко. Правда у самого руки очень долго до этого не доходили.

Но буквально вчера руки очень сильно зачесались, и посидев ночку я разобрался в том, как работает технология p2p во Flash. Соединить видеопотоки двух flash-клиентов мне показалось мало, поэтому решил сделать что-то более интересное:
  1. Пользователь открывает страничку
  2. Выбирает тему для разговора (один из постов на главной хабры)
  3. Разговаривает со всеми, кто выбрал эту же тему

Сделал. Тут мой пример видеоконференции, исходники клиента и сервера можно скачать отсюда. Минимальные требования для примера — наличие Flash Player 10 и вэб-камеры.

UPD: Все это добро хостится на AppEngine, могут закончиться бесплатные квоты и все перестанет работать. Перекинул клиента на narod.ru. Если работать не будет — заходите сюда

Life + В контакте + Facebook = бесплатные облегченные мобильные версии сайтов

Reading time1 min
Views14K
Хорошая новость для жителей Украины.
Вслед за МТС и Вконтакте запускают бесплатную версию сайта 0.vkontakte.ru отреагировали и ребята из Life. В прочем т.к. МТС присутствует и на Украинском рынке, это был всего-лишь вопрос времени, но то что такого короткого да еще и с дополнительными плюшками, радует.

Итак, получив соответствующие настройки доступа в интернет «Life: Social» можно бесплатно ходить по облегченным версиям сайтов:

0.vkontakte.ru
0.vk.com
zero.facebook.com
0.facebook.com

Важное примечание: картинки\фото тарифицируются и не бесплатны, но их можно отключит в браузере, в таком случае трафик будет абсолютно бесплатен.)

P.S: Информация проверена мною, все работает, всем доволен. В довесок пруф и мануал:
Life: Свободный доступ.

Загрузчик фотографий как vkontakte на Flex

Reading time9 min
Views11K
Неделю назад мои знания action script ограничивались тем, как добавить событие onclick на баннер перед загрузкой в баннерную сеть. В качестве загрузчика файлов я использовал swfupload, и очень не хотел влезать внутрь swf-ника и разбираться в коде. Мне не нравится flash, я ни разу не дизайнер и теряюсь, когда вижу все эти слои, кадры, инструменты для рисования звездочек и motion guides.

Потом я наткнулся на эту эту потрясающе-красивую штуку, и узнал, что есть flex. И что flex — это круто, потому что даже такой супер-начинающий как я, с нуля за несколько дней смог написать загрузчик фотографий с предпросмотром, ресайзом на клиенте и upload-баром, примерно такой, какой используется на сайте vkontakte.ru.

Есть три причины, из-за которых я решил использовать flash для загрузки фотографий. Это FileReference, FileReferenceList и flash.display.Bitmap. В 10-й версии флеш плеера у FileReference появилась функция load(), с помощью которой можно просматривать выбранные фотографии в ролике локально без загрузки на сервер. FileReferenceList позволяет в файловом диалоге с помощью shift-а выбрать сразу несколько фотографий. Bitmap делает ресайз картинок перед отправкой на сервер. Все это нельзя сделать на чистом javascript-е.

Итак, пишем загрузчик фотографий как vkontakte на flex (пошаговое пособие для совсем начинающих).
Читать дальше →

OAuth: описание протокола простым и понятным языком

Reading time16 min
Views198K
OAuth — популярный протокол, который позволяет социальным сервисам интегрироваться между собой и дает безопасный способ обмена персональной информацией. OAuth может связать между собой 2 сервиса, каждый из которых имеет свою пользовательскую базу — именно их я в данном случае называю «социальными». Когда начинаешь работать с OAuth, первое ощущение — что протокол весьма сложен и избыточен. В этой статье я попытаюсь объяснить основы OAuth человеческим языком.

Пример кросс-авторизации


Вернемся в 2005-й год и представим, что мы пишем социальную сеть. В ней имеется форма импорта контактов из адресной книги GMail. Что нужно для доступа к контактам GMail? Конечно, логин и пароль от ящика. Но если мы попросим ввести их на нашем сайте, пользователь заподозрит неладное. Где гарантия, что мы не сохраняем на сервере введенные пароли? Поэтому нам хочется, чтобы пароль вводился только на сайте GMail, и после этого доступ к контактам через API GMail предоставлялся нашей социальной сети (возможно, на время).
Под катом - повествование с примерами

Уведомление о новых письмах в jabber

Reading time2 min
Views655
В gtalk есть приятная опция оповещения пользователся о новых письмах, но поскольку я пользуюсь другим jabber-сервером, подумалось, что было бы удобно замутить такую фичу и себе. Может я конечно плохо смотрел, и в gmail есть такая возможность, но я её не нашел и написал небольшой скриптик, который повесил в cron. И теперь он радостно меня оповещает о новых письмах каждые 15 минут, если конечно таковые письма имеются.

Для работы с jabber использовал библиотеку XMPPHP.
Читать дальше →

5 советов новоиспеченному начальнику отдела

Reading time5 min
Views160K
Хочу поделиться 5 важными, на мой взгляд, вещами, которые должен осознать специалист, внезапно ставший начальником своего отдела. Это скорее напутствие, психологическая накачка, чем конкретные методики, но как мне кажется, карьерные изменения — момент для изменений внутренних. Мне самому повезло стать начальником нового отдела, созданного из сотрудников, занятых определенным направлением, и вот что я успел для себя уяснить.
Читать дальше →

Секреты Metasploit

Reading time4 min
Views228K

Вступление


В 2003 году, хакеру, известному как «HD Moore», пришла идея разработать инструмент для быстрого написания эксплоитов. Так был рожден хорошо известный во всех кругах проект Metasploit. Первая версия фреймфорка была написана на языке Perl, содержавшая псевдографический интерфейс на базе библиотеки curses.

К 2007 году разработчики консолидировались, основав компанию Metasploit LLC; в это же время проект полностью переписали на Ruby и, частично на Си, Python и Ассемблер.

В октябре 2009 года, проект Metasploit был приобретен компанией Rapid7 с условием, что HD Moore останется техническим директором фреймворка, на что согласилась компания Rapid7.
Читать дальше →

Создание лендингов: как с их помощью повысить конверсию, и чем хороший лендинг отличается от плохого. Часть 1

Reading time4 min
Views36K

Landing page — достаточно важная часть маркетинговой компании, с ее помощью потенциальный клиент узнает о вашем продукте. Поэтому мы решили поделиться статьей Peep Laja о том, почему к продающим страницам относятся критически, и над какими составляющими надо поработать, чтобы создать эффективную landing page. Ниже — первая часть статьи, в которой автор размышляет о причинах создания неудачных лендингов и приводит их примеры. Статья написана от первого лица. Для сравнения мы подобрали также пару примеров качественных лендингов.

А был ли лендинг?

Вы ведь сталкивались с длинными продающими страницами? Да, на них все подробно расписано, однако в большинстве случаев их эффективность оставляет желать лучшего: низкое качество исполнения лишает эти страницы привлекательности для целевой аудитории.
Читать дальше →

Что такое фондовые индексы и зачем они нужны

Reading time9 min
Views145K
image

Каждый хотя бы раз в своей жизни сталкивался с понятием биржевых индексов или, как минимум, слышал о том, что «индексы РТС и ММВБ обновили максимум с апреля». Но что же скрывается за данным понятием, и зачем вообще нужны фондовые индексы? Сегодня мы подробнее рассмотрим этот вопрос.
Читать дальше →

«Кассини» получил снимок «глаза Сатурна»

Reading time1 min
Views37K


Атмосферные бури на Юпитере и Сатурне — очень интересные объекты для изучения. На Юпитере наиболее известным является «Большой вихрь», образование, в котрое можно поместить пару десятков Земель.

На Сатурне это шестигранный атмосферный шторм, который не так давно был снят на видео аппаратом «Кассини» с применением цветных фильтров.



Теперь Кассини, пролетая на расстоянии 2,2 миллионов километров от Сатурна, получил детальный снимок «глаза Сатурна» — центра того самого шестиугольного шторма. По оценкам специалистов, диаметр «глаза» составляет 2 тысячи километров.

Читать дальше →

Руководство по работе с Apple Push Notification Service

Reading time13 min
Views266K
Статья представляет собой вольный перевод руководства по работе с Apple Push Notification Service сайта raywenderlich.com и некоторые мои дополнения.

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

Но что если происходит что-то интересное и вы хотите сообщить об этом пользователям, даже если ваше приложение у них не запущено?
Читать дальше →
1

Information

Rating
Does not participate
Location
Кемеровская обл., Россия
Date of birth
Registered
Activity