Pull to refresh
9
Karma
0
Rating

Как писать хорошие комментарии к коду: «зачем», а не «как»

Designing and refactoring *IT Standards *
Sandbox
Привет, Хабр! Представляю вашему вниманию перевод статьи «Writing good comments: the why, not the how» автора Jack Franklin.

image

Комментирование кода в программистской среде нередко считается пустой тратой времени или неким сигналом о том, что код можно и улучшить. Вот цитата из файла CONTRIBUTING.md, который я нашёл на Гитхабе (и таких примеров очень, очень много):
Комментариев следует избегать. Если ваш код нельзя понять без комментариев, перепишите его так, чтобы он сам себя объяснял.

Я считаю, что в большинстве случаев такой совет будет неудачным и неверным.
Читать дальше →
Total votes 40: ↑38 and ↓2 +36
Views 13K
Comments 11

Новости недели: корпоративный блокировщик рекламы в Chrome, ФСБ и ключи шифрования «Яндекса», связь дорожает

Information Security *Legislation in IT Cellular communication


В новом выпуске дайджеста читайте:

  • VPN-сервис HideMy.name смог добиться в суде отмены блокировки;
  • полноценный блокировщик рекламы в Chrome будет доступен только для корпоративных пользователей;
  • данные eSim будут хранить на территории РФ;
  • Яндекс не предоставил ФСБ ключи шифрования;
  • связь в России дорожает из-за отмены роуминга;
  • команда МФТИ выходит в финал конкурса Amazon;
  • Apple удаляет из сети неугодные ролики;
  • краснодарский провайдер отказывается устанавливать оборудование для «Закона Яровой».
Total votes 17: ↑15 and ↓2 +13
Views 8K
Comments 7

Операционные системы с нуля; уровень 3 (старшая половина)

Programming *Assembler *System Programming *Rust *Programming microcontrollers *
Tutorial
Translation

В этой части мы допишем обработку прерываний и возьмёмся за планировщик. Наконец-то у нас появятся элементы многозадачной операционной системы! Разумеется это только начало темы. Одно прерывание таймера, один системный вызов, базовая часть простого планировщика потоков. Ничего сложного. Однако этим мы подготовим плацдарм для создания полноценной системы, которая будет заниматься самыми настоящими процессами безо всяких "но". Прямо как в этих ваших линупсах и прочих. До конца этого курса осталось уже чуть менее половины.


Нулевая лаба


Первая лаба: младшая половина и старшая половина


Вторая лаба: младшая половина и старшая половина


Третья лаба: младшая половина

Читать дальше →
Total votes 28: ↑28 and ↓0 +28
Views 14K
Comments 13

Заметки о восстановлении работы встраиваемых систем

Computer hardware
Sandbox
Попытался собрать свой опыт портирования OpenWRT на встраиваемое оборудование. В этой статье расскажу о том как работать с загрузчиком u-boot и основных проблемах возникающих при загрузке операционной системы.
Читать дальше →
Total votes 3: ↑3 and ↓0 +3
Views 7K
Comments 2

Основы работы с Robotic Operating System

Robotics
Sandbox

Введение


    Доброго всем времени суток!
    Осваивая в очередной раз просторы Хабра, заметил, что здесь практически нет информации о Robotic Operating System (далее просто ROS). Поспешу исправить эту оплошность и популяризовать замечательный продукт.
image
    Что же это такое? ROS представляет собой надстройку над ОС, которая позволяет легко и просто разрабатывать системы управления роботами. Что это означает и как с этим потом жить — и призвана рассказать серия топиков.
    По сути, ROS — это набор из различных широко (и неочень) известных библиотек, таких как:
  • OpenCV — библиотека, содержащая алгоритмы компьютерного зрения и обработки изображений;
  • PCL- библиотека для работы с облаками 3D-точек;
  • Ogre — объектно-ориентированный графический движок с открытым исходным кодом;
  • Orocos — библиотека для управления роботами (например, расчет кинематики).

    Также в ROS входят драйвера для различных манипуляторов и сенсоров (включая MS Kinect).
Читать дальше →
Total votes 36: ↑34 and ↓2 +32
Views 45K
Comments 20

Парсер RSS на bash для LostFilm.TV: Transmission + SQLite + mkvtools

Lumber room
Sandbox
Здравия желаю, Хабр!

В ответ на предыдущий топик про парсер RSS-ленты LostFilm.TV хочу выложить свой вариант работающий уже около 4х месяцев без каких-либо ошибок.
Суть идеи состоит в том, что сервер качает сериалы и раскладывает по папкам, оформляя при этом файлы с обложкой и нормальным заголовком.
Однако, в работе всей системы участвует не один скрипт, а целый набор скриптов. В такой системе скрипты разделены на pre-обработку и post-обработку.
И, конечно же, для эстетов: файлы каждой серии должны выглядеть красиво и быть разложены по папкам.
Читать дальше →
Total votes 7: ↑6 and ↓1 +5
Views 1.6K
Comments 14

Диагностика неисправностей блока питания с помощью мультиметра

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

Дисклеймер номер раз: Данная статья относится только к обычным блокам питания стандарта ATX, она не относится к проприетарным стандартам блоков (например как у старыx рабочиx станциях DELL или SUN), использующим другую распиновку ATX-коннектора. Внимательно сверьтесь со схемой и убедитесь в том, что ваш блок питания является стандартным прежде чем проводить диагностику, во избежании причинения вреда вашему компьютеру.

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


Перейдем к теории:

Стандарт ATX имеет 2 версии — 1.X и 2.X, имеющие 20 и 24-пиновые коннекторы соответственною, вторая версия имеет 24-x 4 дополнительных пина, удлиняя тем самым стандартный коннектор на 2 секции таким образом:
image

Прежде чем мы начнем, расскажу про “правила большого пальца” по отношению к неисправностям:
1) Проблемную материнскую плату легче заменить чем починить, это крайне сложная и многослойная схема, в которой разве что можно заменить пару конденсаторов, а обычно это проблемы не решает.
2) Если вы не уверены в том что вы делаете, то не делайте этого.

Читать дальше →
Total votes 135: ↑130 and ↓5 +125
Views 327K
Comments 58

Интуиция, головоломки и вычислимость

Artificial Intelligence
В этой статье я хочу рассказать об одном парадоксе, который был подмечен давно, но который до сих пор является таинственной загадкой — одной из тех, о которых рассказывают преподаватели, чтобы заинтересовать студентов своим предметом. Этот парадокс непосредственно связан с проблемой искусственного интеллекта, поэтому данная статься опубликована в соответствующем блоге.

Но об этом после, а для начала я расскажу, как уделал собственную программу в решении простой, на вид, головоломки из игры Still Life.

Читать дальше →
Total votes 63: ↑45 and ↓18 +27
Views 4.5K
Comments 54

Российские микропроцессоры

Computer hardware
Sandbox
Когда-то еще советские ЭВМ занимали лидирующую позицию среди своих конкурентов. В это мало верится, но знаменитая БЭСМ-6 (первая в СССР на основе транзисторов и ИС), разработанная под руководством легендарного Сергея Лебедева рассчитывала траекторию полета космического корабля «Союз-19» и американского «Аполлона»!
Но это было в 70-х, теперь Россия врядли может похвастаться своей компьютерной индустрией. Цель нижеследующего — выяснить, что на сегодняшний день творится с Российским компьютеростроением и ждет его в будущем…
Читать дальше →
Total votes 84: ↑71 and ↓13 +58
Views 28K
Comments 87

История одного байта

History of IT
Предисловие.
Этот рассказ имеет свою длинную историю. Для многих это, возможно, будет махровый баян, но мне кажется он стоит того, что бы его прочитали новые люди.
Во всех источниках, где я встречал его сведения об авторе были просты и незатейливы: Dmitry Galuscenko. Если кто-то может указать сайт или e-mail — напишите в комментариях, я с удовольствием добавлю.
Итак, начнем.


Мне не хватало байта. Всего одного. Да, да. Того самого, что из восьми бит состоит. Что? Hет, я не псих, хотя одному богу известно, сколь тонкой была граница отделявшая меня от этого состояния.
Hо все по порядку
Total votes 140: ↑121 and ↓19 +102
Views 47K
Comments 120

Что нужно знать про арифметику с плавающей запятой

C++ *
Sandbox


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

Арифметика с плавающей запятой почему-то считается экзотической областью компьютерных наук, учитывая, что соответствующие типы данных присутствуют в каждом языке программирования. Я сам, если честно, никогда не придавал особого значения компьютерной арифметике, пока решая одну и ту же задачу на CPU и GPU получил разный результат. Оказалось, что в потайных углах этой области скрываются очень любопытные и странные явления: некоммутативность и неассоциативность арифметических операций, ноль со знаком, разность неравных чисел дает ноль, и прочее. Корни этого айсберга уходят глубоко в математику, а я под катом постараюсь обрисовать лишь то, что лежит на поверхности.
Читать дальше →
Total votes 245: ↑242 and ↓3 +239
Views 831K
Comments 75

Пополняем шпаргалки по C++: неявно-генерируемые перемещающий конструктор и оператор присваивания

C++ *
Tutorial
Когда не так часто, как хотелось бы, приходится работать с языком, некоторые аспекты забываются. А некоторые никогда и не откладываются в голове. Поэтому, когда возникают вопросы, приходится отвлекаться и лезть в документацию.

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

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

Читать дальше →
Total votes 31: ↑28 and ↓3 +25
Views 25K
Comments 19

Как работает yield

Python *
Translation
На StackOverflow часто задают вопросы, подробно освещённые в документации. Ценность их в том, что на некоторые из них кто-нибудь даёт ответ, обладающий гораздо большей степенью ясности и наглядности, чем может себе позволить документация. Этот — один из них.

Вот исходный вопрос:
Как используется ключевое слово yield в Python? Что оно делает?

Например, я пытаюсь понять этот код (**):
def _get_child_candidates(self, distance, min_dist, max_dist):
    if self._leftchild and distance - max_dist < self._median:
        yield self._leftchild
    if self._rightchild and distance + max_dist >= self._median:
        yield self._rightchild

Вызывается он так:
result, candidates = list(), [self]
while candidates:
    node = candidates.pop()
    distance = node._get_dist(obj)
    if distance <= max_dist and distance >= min_dist:
        result.extend(node._values)
        candidates.extend(node._get_child_candidates(distance, min_dist, max_dist))
        return result


Что происходит при вызове метода _get_child_candidates? Возвращается список, какой-то элемент? Вызывается ли он снова? Когда последующие вызовы прекращаются?

** Код принадлежит Jochen Schulz (jrschulz), который написал отличную Python-библиотеку для метрических пространств. Вот ссылка на исходники: http://well-adjusted.de/~jrschulz/mspace/

Подробный и обстоятельный ответ
Total votes 141: ↑136 and ↓5 +131
Views 581K
Comments 41

SITH — техника CSS3 для плавной смены изображения

CSS *
Sandbox
Доброго времени суток, Хабр!

Хотел бы рассказать Вам, каким образом я добился плавной смены цветов иконок при наведении на них курсора. Подобная проблема часто встречается на Facebook. Если иконка представляет собой синий силуэт на белом фоне, то при наведении курсора оба цвета меняются местами, причём происходит это мгновенно и выглядит немного резко. Мои эстетические чувства были задеты, и я разработал своё решение.

Не встретив на просторах Интернета чего-либо подобного, я взял на себя ответственность назвать этот метод SITH (Soft Image Transition on :Hover) — плавный переход изображения при наведении.

SITH - CSS3 Soft Image Transition on :Hover

Под хабракатом Вы найдёте полное описание техники, весь код, несколько скриншотов и ссылку на демонстрационную версию.
Читать дальше →
Total votes 140: ↑119 and ↓21 +98
Views 16K
Comments 48

Сделано у нас — опыт раскрутки

Self Promo
Сделано у нас
После публикации о моем проекте "Сделано у нас", мне пришло несколько писем с просьбой рассказать о том, как я раскручивал и продвигал проект. Сначала я отписывался общими фразами типа «не виноватая я, он сам пришел», в смысле ресурс раскрутил себя сам, а я усилий к этому не прилагал.

По сути, это правда. Я не заказывал каких-то дорогостоящих пиар акций, у меня не было никакой четкой стратегии продвижения проекта. Но все же, подумав, я решил, что рассказать есть о чем.
Читать дальше →
Total votes 90: ↑78 and ↓12 +66
Views 2K
Comments 27

Cага о пакетном конвертировании pdf в text

Configuring Linux *
Sandbox
В прошлом году была заказана, как казалось на первый взгляд, простая работа: создать систему пакетной обработки файлов — содержащих 12-ти колоночную таблицу, данные из которой экспортировать в БД. Все бы ничего — да вот файлы оказались документами в pdf, а заказчик утверждал что другого формата для обработки предоставить никак не может.

image
Образец того самого pdf-а — в файле сохранена структура, но подчищены все данные.

Чтож, несмотря на предупреждения знающих людей, а предупреждали они ой как не зря — я за работу взялся и пережил вот такое приключение:

Читать дальше →
Total votes 73: ↑70 and ↓3 +67
Views 19K
Comments 23

Изменение часовых зон в России, Белоруссии и на Украине

System administration *
Как вы, наверняка, уже слышали, осенью 2011 сразу несколько государств приняли решение об изменении порядка исчисления времени на своей территории, а также об отмене сезонного перехода на летнее время.
В списке этих государств: Россия, Белоруссия, Украина, частично признанные государства: Абхазия и Южная Осетия, а также непризнанное государство Приднестровье. Т.е. во всех часовых поясах этих стран теперь круглый год будет фиксированный сдвиг относительно UTC, без дополнительных сезонных сдвигов.
(Примечание: Украина сначала приняла решение о переходе на время UTC+3 без летнего времени, но потом отменила принятое ранее решение и пока вернулась к прежнему порядку исчисления времени с сезонными переводами часов. Подробности ниже.)

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

Полагаю, многим системным/прикладным администраторам, а также некоторым разработчикам приложений/сервисов, полезно будет ознакомиться с этим материалом. А потом предлагаю всем заинтересованным обсудить и дополнить эту информацию в комментариях.
Для начала немного общей информации...
Total votes 263: ↑254 and ↓9 +245
Views 38K
Comments 101

ООП — Организация Освобождения Палестины

Programming *
Эта статья является изложением в письменном виде моего личного восприятия программирования и Объектно-ориентированного программирования в частности. Здесь собраны и душевные негодования, и переживания за программистов всего мира. Всё, конечно же, подкреплено исходным кодом.


Читать дальше →
Total votes 113: ↑76 and ↓37 +39
Views 16K
Comments 64

Администрирование для самых маленьких (Part 1: наводим порядок)

System administration *
Каждый раз удивляюсь, когда знакомые админы, которые абсолютно без проблем работают в linux теряются и не знают что делать, когда сталкиваются с администрированием домена AD.
Для большинства опытных администраторов вряд ли данная статья окажется полезной, но…

Итак, вы устроились на работу. Условия хорошие, зарплата большая, секретарши улыбаются, охрана приветливая, а кофе — бесплатное, но предыдущий сисадмин был студентом третьего курса техникума сельского хозяйства и оставил после себя 50 компьютеров с именами типа «NOVENKIY», «SPORTSMEN», «UVALEN», «23FG34». Ну еще стоит заметить, что половина компьютеров в AD — мертвецы. А те, которые и названы по фамилиям сотрудников — названы фамилиями тех, кто давно не работает в компании.

Кроме всего прочего, этот тип вручную наделал кучу гадостей «для безопасности». И вам абсолютно непонятно, как и с чего начинать. А начинать лучше всего с наведения порядка.
Читать дальше →
Total votes 137: ↑129 and ↓8 +121
Views 91K
Comments 133

Почему в WiMax и LTE используют OFDM

Algorithms *Wireless technologies *Network standards *Cellular communication
Tutorial


Аббревиатура OFDM расшифровывается как Orthogonal frequency-division multiplexing. В русскоязычной литературе встречается несколько различных переводов, несущих, в принципе, один смысл: OFDM — это механизм мультиплексирования (уплотнения) посредством ортогональных поднесущих.



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





Иллюстраций: 18, символов: 27 399, строк кода: 99.



Читать дальше →
Total votes 273: ↑269 and ↓4 +265
Views 114K
Comments 61
1

Information

Rating
Does not participate
Date of birth
Registered
Activity