Pull to refresh
12
0
Send message

7 золотых правил одного программиста

Reading time3 min
Views143K
Это статья про семь простых правил, которые я сформулировал для себя за годы работы программистом. Семь правил, которые подняли мою эффективность. Сделали меня лучше. Это мои правила и они работают для меня. Я не пытаюсь навязать их вам, я хочу поделиться с вами, и, возможно, узнать о том, каких правил и принципов придерживаетесь вы.

Компьютер всегда прав


Самая раздражающая ситуация в программировании — когда код верный, но не работает. “Да тут три строчки, блин, просто негде ошибиться! Наверное баг! Пойду потрачу три дня на изучение баг-репортов компилятора/интерпретатора/фреймворка...”. Возникает чувство, будто компьютер над вами издевается!

Тут главное помнить, что в этих трех строчках есть ошибка. Если код работает не верно — значит код написан не верно. Точка. Виноваты только вы. Универсальный совет — идите спать! Ну или хотя бы отвлекитесь на чашку чая. Когда, через некоторое время, вы вернетесь к коду, наверняка станет ясно, что тут лишний оператор отрицания, или перепутаны две переменные с похожими именами, или еще какая-нибудь мелочь, в которой мы никогда никому не признаемся.
Читать дальше →
Total votes 140: ↑120 and ↓20+100
Comments83

Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 3 из 6

Reading time6 min
Views94K

Содержание курса



Улучшение кода






Official translation (with a bit of polishing) is available here.




А что потом? Я разобрал весь материал!



В статьях 7 и 8 мы поговорим о программировании непосредственно под OpenGL. Есть ненулевая вероятность получить краткий курс OpenCL/CUDA в статьях 9+.

Удаление невидимых поверхностей


Знакомьтесь, это мой друг z-buffer головы абстрактного африканца. Он нам поможет убрать визуальные артефакты отбрасывания задних граней, которые у нас оставались в прошлой статье.



Кстати, не могу не упомянуть, что эта модель, которую я использую в хвост и в гриву, была любезно предоставлена замечательным Vidar Rapp.

Мы её можем использовать исключительно в рамках обучения рендерингу. Это очень качественная модель, с которой я варварски обошёлся, но я обещаю вернуть ей глаза!
Читать дальше →
Total votes 90: ↑89 and ↓1+88
Comments63

Домашняя автоматизация с openHAB: освещение и удаленное управление обогревателями. Часть 1

Reading time9 min
Views135K


Моя прошлая статья была о выборе ламп освещения для жилой мастерской. В этот раз расскажу про реализацию домашней автоматизации в том же помещении. Мастерская отапливается двумя электрическими обогревателями. Хотелось удаленно их включать, чтобы не приезжать в холодное помещение. И еще хотелось поддерживать заданную температуру, до этого при изменении температуры на улице приходилось каждый раз крутить «термостаты» обогревателей. Ну и управление освещением, датчик открытия двери и т.д.
Читать дальше →
Total votes 33: ↑31 and ↓2+29
Comments75

Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 2 из 6

Reading time7 min
Views142K

Содержание курса



Улучшение кода






Official translation (with a bit of polishing) is available here.




Update:


Внимание, статья 4в даёт новую, более простую версию растеризатора.

Давайте знакомиться, это я.



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

В прошлый раз мы нарисовали проволочную сетку трёхмерной модели, в этот раз мы зальём полигоны. Точнее, треугольники, так как OpenGL практически любой полигон триангулирует, поэтому ни к чему разбирать сложный случай. Напоминаю, что этот цикл статей создан для самостоятельного программирования. Время, которое я здесь привожу — это не время чтения моего кода. Это время написания вашего кода с нуля. Мой код здесь только для того, чтобы сравнить ваш (рабочий) код с моим. Я совсем не являюсь хорошим программистом, поэтому ваш код может быть существенно лучше моего. Любая критика приветствуется, любым вопросам рад.

Пожалуйста, если вы следуете этому туториалу и пишете свой код, выкладывайте его на github.com/code.google.com и им подобные и давайте ссылки в комментариях! Это может хорошо помочь как и вам (другие люди могут чего посоветовать), так и будущим читателям.
Читать дальше →
Total votes 119: ↑116 and ↓3+113
Comments116

Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 1 из 6

Reading time7 min
Views399K

Содержание курса



Улучшение кода






Official translation (with a bit of polishing) is available here.




Постановка задачи


Цель этого цикла статей — показать, как работает OpenGL, написав его (сильно упрощённый!) клон самостоятельно. На удивление часто сталкиваюсь с людьми, которые не могут преодолеть первоначальный барьер обучения OpenGL/DirectX. Таким образом, я подготовил краткий цикл из шести лекций, после которого мои студенты выдают неплохие рендеры.

Итак, задача ставится следующим образом: не используя никаких сторонних библиотек (особенно графических) получить примерно такие картинки:



Внимание, это обучающий материал, который в целом повторит структуру библиотеки OpenGL. Это будет софтверный рендер, я не ставлю целью показать, как писать приложения под OpenGL. Я ставлю целью показать, как сам OpenGL устроен. По моему глубокому убеждению, без понимания этого написание эффективных приложений с использованием 3D библиотек невозможно.
Читать дальше →
Total votes 198: ↑196 and ↓2+194
Comments120

Еще одна библиотека для работы с 433 MHz устройствами

Reading time6 min
Views24K
Всем привет!

Хочу поделиться JAVA библиотекой для работы с радио-устройствами домашней автоматизации (обычно 433.92 МГц) над которой я работаю в последнее время. Она еще достаточно сырая для серьезного использования, но для домашних поделок — в самый раз
Адрес на github — github.com/eschava/rf-protocols-java

Предпосылки к созданию


После покупки Cubietruck решил перенести на него все задачи умного дома, которые выполнялись на Ардуино. В основном это прием и передача радио-сообщений устройствам домашней автоматизации (розетки, датчики, отопление)
Все, что было найдено в сети, было либо сделано только для Raspberry Pi, либо слишком заточено под какую-то определенную функциональность. Поэтому решил реализовать все самому, используя привычный язык разработки (Java) и сделать как можно более гибким и расширяемым (реестр фабрик и все такое, как это принято в джаве)

Для работы с RF устройствами посредством GPIO портов выбрал достаточно малоизвестную, но многообещающую библиотеку libbulldog которая позволяет абстрагироваться от платформы на которой все запущено. На данный момент поддерживаются (теоретически) Raspberry Pi, BeagleBoard, Cubieboard, но тестировалось только на Cubieboard3 (aka Cubietruck) который есть у меня в наличии.
Также поддерживается (опять же теоретически) популярная библиотека для Raspberry PI Pi4j, но, к сожалению, не было возможности опробовать ее на практике

Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments3

Играй на победу: как побеждать в играх и что нужно знать о профессиональных игроках в GameDev [часть 1]

Reading time6 min
Views127K


Давным-давно мы с друзьями играли в Starcraft по диалапному модему. Я часто проигрывал, пока не прочитал на одной из BBS фразу, которая всё поменяла. Принцип очень простой: в стратегиях реального времени выигрывает тот, кто постоянно атакует. Нужно было научиться мыслить категориями постоянного создания угроз.

К чему я это. Есть такой мужик — Дэвид Сирлин. Киберспортсмен, чемпион по Street Fighter, гейм-дизайнер, настольщик, киберспортивный тренер. У него есть целая теория на тему того, как тренироваться и играть так, чтобы выигрывать. Универсальная, применима ко всем играм. Ниже — основные тезисы первой части и мои комментарии. Прочитать про основные вещи из книги будет интересно и с точки зрения GameDev (в особенности — балансировки), и просто по жизни.
Читать дальше →
Total votes 76: ↑72 and ↓4+68
Comments57

Разбираемся с Flux, реактивной архитектурой от facebook

Reading time7 min
Views115K


Введение


Добро пожаловать в третью часть серии статей «Изучаем React». Сегодня мы будем изучать, как устроена архитектура Facebook Flux, и как использовать ее в своих проектах.
Ррреактивно!
Total votes 25: ↑25 and ↓0+25
Comments16

Почему большие достижения не сделают вас счастливее (и что с этим делать!)

Reading time4 min
Views39K
image

Ранее мы уже знакомили вас с переводами статей Chris Bailey, которые он писал по мере развития своего проекта a Year of Productivity — они доступны в нашем блоге в разделе «личная продуктивность».

Сегодня мы хотели бы познакомить вас с выводами Криса о взаимосвязи между продуктивностью и счастьем.

Итак, даем слово Крису!
Читать дальше →
Total votes 34: ↑27 and ↓7+20
Comments10

Гон эффективности

Reading time3 min
Views65K
Как-то раз я посетил курсы быстрого чтения. В самом начале происходил замер существующей, природной скорости, а в конце обучения — еще один замер, чтобы видно было, за что деньги плачены. Надо было прочесть из длинного текста сколько успеешь и ответить на вопросы, получив некий условный показатель «осмысленного скорочтения». За четыре недели мой тест улучшился почти в 5 раз.

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

Через несколько лет, когда вел тренинги по личной эффективности, управлению временем и проч., я много раз жалел, что нет у меня права через полчаса после начала тренинга отпустить половину зала по домам. Когда мало-мальски наметан глаз, так хорошо видны люди, которым это занятие ну совершенно бесполезно, и даже вредно. Однако, каждый идет своим путем, и если кому-то кажется, что этот путь слишком извилист и не оптимален, то этот кто-то сам высокомерен и недалек. Некоторые углы срезать невозможно. Некоторые этапы жизни невозможно пропустить. Для множества людей такой этап — воинствующий культ эффективности.
Читать дальше →
Total votes 69: ↑58 and ↓11+47
Comments18

Путь разработчика: истории о моих фееричных провалах, часть 2

Reading time6 min
Views35K
Всем привет, с вами снова Delfuego FM, и я наконец-таки созрел, чтобы выложить вторую часть статьи! Вследствие неоднозначной реакции на первую часть, была предпринята попытка выложить вторую на geek times, и… она успешно провалилась. Поэтому придётся совершить небольшой хабрасуицид и выложить её прямо тут! Итак, поехали!..

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

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


Читать дальше →
Total votes 87: ↑51 and ↓36+15
Comments26

VPN в каждый дом

Reading time1 min
Views189K


Всем привет! Желание сделать VPN сервер максимально простым в установке и удобным в использовании назревало уже давно. За основу я взял L2TP/IPsec, эта технология нативно поддерживается всеми устройствами и в отличии от PPTP не вызывает проблем при подключении через сотовых операторов.

tl;dr
Для установки нам потребуется машинка с Ubuntu 14.04 на борту и «белым» IP-адресом, любой VPS подойдет. Достаточно ввести эту волшебную строчку:
 curl -sS https://raw.githubusercontent.com/sockeye44/instavpn/master/instavpn.sh | sudo bash 

и через несколько минут у вас будет рабочий VPN с управлением через браузер (httр://ip-address:8080/) или консоль (instavpn -h).
Читать дальше →
Total votes 88: ↑77 and ↓11+66
Comments245

Записки арт-директора самоучки: не рычите на программиста

Reading time5 min
Views26K
Вы с небольшой командой создаете стартап (неважно, мобильное, веб или настольное приложение). Возможно, часть команды работает удаленно и вы с ними общаетесь по скайпу. И все у вас прекрасно. Разработка идет небольшими итерациями, проектировщик проектирует, дизайнер рисует, программисты получают четкую задачу и воплощают ее в элегантный и гибкий программный код, который не приходится переделывать. Руководство довольно, в команде царит взаимопонимание и доверие, проект движется к завершению и все уже видят себя пожинающими сладкие лавры победы.

Если это действительно так — снимаю перед вами шляпу. Просто мечтаю познакомиться с вами и перенять ваш опыт. Дальше можете не читать — статья не для вас.
Читать дальше →
Total votes 47: ↑32 and ↓15+17
Comments31

НАСА готовит эксперимент для проверки концепции варп-двигателя

Reading time2 min
Views296K
Знатокам научно-фантастических произведений (в частности, сериала Star Trek) хорошо известно, что основным двигателем на кораблях Звёздного флота Федерации планет является именно варп-двигатель. В научно-фантастических произведениях исключительно подробно объясняют принцип его работы.



Варп-поле представляет собой пузырь Алькубьерре, своеобразное искривление пространства-времени, внутри которого корабль может достичь сверхсветовой скорости. Поскольку варп-поле сжимает пространство перед собой и расширяет его позади корабля, то не нарушается запрет на движение выше скорости света в обычном пространстве-времени.
Читать дальше →
Total votes 140: ↑126 and ↓14+112
Comments243

Google Play — работаем легально!

Reading time4 min
Views179K
Привет, Хабр!



Сегодня, я хочу рассказать о том как сделать свое хобби по разработке Android-приложений пусть небольшим, но официальным бизнесом. О том, как легально получать деньги, заработанные на Google Play, о «страшном» валютном контроле и «таинственном» паспорте сделки.
Читать дальше →
Total votes 92: ↑88 and ↓4+84
Comments115

Структура белка: введение для айтишников

Reading time17 min
Views155K
Приятно видеть, что хабравчане регулярно интересуется другими предметными областями – например, биологией (более конкретно – структурой и функцией биологических макромолекул). Однако некоторые посты (например, этот), вызывают у специалиста просто физическую боль из-за обилия совершенно диких фактологических ошибок. В этом посте мне хочется рассказать о структуре и функции белка. О том, что мы знаем и о том, чего не знаем, а так же об имеющихся в этой области вычислительных задачах, требующих решения и интересных IT-специалистам. Постараюсь рассказывать сжато и тезисно, чтобы информации было больше, а воды – меньше. Всех, интересующихся структурой белков, прошу под кат, там очень много букв.
Читать дальше →
Total votes 146: ↑145 and ↓1+144
Comments72

Гарри Поттер и методы рационального мышления

Reading time2 min
Views44K
Фанфики по мотивам популярной детской сказочки? На моем хабре???


Не спешите.

Существует небольшое число художественных или научно-популярных книг, автор которых прямо говорит о таких вещах, как научный метод, когитивные искажения, истинная рациональность и прочее, что на самом деле отличает ученого от других людей. Еще меньше из них написаны интересно. И, конечно же, среди них почти совсем нет того, что мы называем фанфиками — то есть написанных по мотивам какого-то другого известного произведения. Кто будет писать серьезные вещи в столь несерьезной форме?

А между тем, идея — гениальна.

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

Но если взять не свой, а чужой мир? Желательно, конечно, что бы этот мир был уже широко известен публике. Хорошо, если этот мир — фантастичен (в фантастике всегда найдутся логические дыры мироустройства разного калибра). Превосходно, если этот мир будет допускать возможность попадания в него ученого из нашего мира.

Так что позвольте вам представить...
Total votes 80: ↑62 and ↓18+44
Comments23

Копи деньги смолоду или пара утверждений, легко проверяемых в Excel

Reading time2 min
Views209K
На хабре регулярно появляются посты, посвященные системам личных финансов. Системы эти бывают простенькие, навороченные, красивые и т.д. Но! Большинство из них почему-то напрочь игнорирует такую простую штуку как сложные проценты (простите за каламбур). А ведь это основа личных финансов.

Приведу два простых примера, иллюстрированных табличками в Excel. Для затравки вопрос: имеются два ровесника: Вася и Петя. Вася фрилансер и ему 22 года. Он начал откладывать по штуке долларов в год и откладывал их до 30 лет (всего 8 лет). Потом родился ребенок, с деньгами стало туговато и откладывать он больше не смог. Петя же наоборот, в начале карьеры откладывать не мог, но в 30 лет он стал тимлидером и наконец-то смог относить в банк по той же штуке ежегодно. Делал он это аккурат до выхода на пенсию, т.е. до 65 лет (итого 36 лет). Вопрос: у кого в 65 лет денег на счету больше? Правильный ответ: конечно же у Васи.
Читать дальше →
Total votes 87: ↑46 and ↓41+5
Comments340

Стресс и нейронные сети: почему лучше не нервничать

Reading time4 min
Views19K
За свою жизнь я сталкивался с десятками публикаций и книг, посвященных преодолению стрессов и эмоциональной реактивности. Обычно в таких материалах большое внимание уделяется избавлению от нервного напряжения, в то время как вред, наносимый организму во время стрессов, практически не описывается.

Даже Карнеги в свое время пытался с медицинской точки зрения описать вред, получаемый организмом от излишних переживаний, однако он не продвинулся дальше его краткой характеристики. В книге «Как перестать нервничать и начать жить» автор ссылается на результаты исследований, которые показали, что нервные люди чаще других умирают от инсультов, инфарктов и страдают от язвы желудка. Довольно убедительно, но информации все равно недостаточно.
Читать дальше →
Total votes 66: ↑57 and ↓9+48
Comments55

Несколько слабо известных эмпирических правил

Reading time6 min
Views10K


По какой-то причине русскоязычные пользователи Интернета не пользуются многими полезными понятиями, законами и эмпирическими правилами, созданными англофонами. Для тех эпоха активного сетевого общения и освоения цифровых технологий началась ещё в начале 90-х, и уже к концу десятилетия были созданы несколько любопытных понятий, которые за редкими исключениями наиболее интересных не настолько распространены. Здесь будет с несколько необычных позиций объяснено, как связаны провал SOPA, сегодняшнее закрытие русскоязычной Википедии и кошачьи, по какой причине анонимы такие злые, почему некоторые хорошие публикации на «Хабрахабре» никогда не имеют комментариев и отчего узкое место безопасности любой системы есть человек.
Читать дальше →
Total votes 108: ↑98 and ↓10+88
Comments46

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity