Search
Write a publication
Pull to refresh
16
0
Эдуард @claygod

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

Send message

Изучаем процессы в Linux

Reading time7 min
Views178K

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

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

Аналоги в «Номенклатуре». Еще один способ экономить с умом. Часть 2

Reading time4 min
Views6.4K

Как мы автоматизировали ведение аналогов, и сколько
это стоило Заказчику


Если вы еще не знаете, что такое аналоги в «Номенклатуре» и почему их стоит вести, то почитайте вот здесь.
В этой же статье я расскажу об опыте автоматизации ведения аналогов на одном из крупнейших предприятий в России. Здесь вас ждет описание конкретного реализованного механизма автоматического подбора аналогов, польза и выгода от которого – в конкретных цифрах.


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

Браузерные расширения для GitHub, которые увеличат продуктивность вашей работы

Reading time3 min
Views19K


Сейчас GitHub — самый популярный среди разработчиков сервис для совместной разработки программного обеспечения и размещения исходников в «облаке». Его используют как независимые разработчики, у которых в портфолио 1-2 приложения, так и технологические гиганты, включая Microsoft, Google и Facebook, у которых тысячи проектов.

Собственно, рассказывать на Хабре о том, что такое GitHub, смысла нет; этот пост посвящен его браузерным расширениям, которые позволяют увеличить скорость и продуктивность работы. Вообще говоря, расширений этих очень много, поэтому мы выбрали те из них, которые используем в своей работе сами или которые порекомендовали коллеги.
Читать дальше →

Генеалогическое древо внутри Git

Reading time6 min
Views16K

Поздравляю всех с днем программиста! Желаю больше ярких "коммитов", принятых "пулл-реквестов", меньше незапланированных "мержей" и чтобы ваши ветви жизни оставались актуальными как можно дольше. В качестве идейного подарка предлагаю реализацию генеалогического древа средствами системы контроля версий Git. Ну что же… звучит как план!


Kochurkins


Для тех, кто сразу все понял, выкладываю исходники генератора: GenealogyTreeInGit и сами генеалогические древа — мое и президентов США.


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

Читать дальше о реализации, подробностях, а также смотреть картинки

Организация «чистого» завершения приложений на Go

Reading time6 min
Views30K


Здравствуйте, в данной заметке будет затронута тема организации «чистого» завершения для приложений, написанных на языке Go.
Чистым выходом я называю наличие гарантий того, что в момент завершения процесса (по сигналу или по любым иным причинам кроме system failure), будут выполнены определённые процедуры и выход будет отложен до окончания их выполнения. Далее я приведу несколько типичных примеров, расскажу о стандартном подходе, а также продемонстрирую свой пакет для упрощённого применения этого подхода в ваших программах и сервисах.

TL;DR: github.com/xlab/closer GoDoc
Читать дальше →

Внедрение зависимостей в Go

Reading time9 min
Views31K

Недавно я создал небольшой проект на языке Go. После нескольких лет работы с Java я был сильно удивлён тем, как вяло внедрение зависимостей (Dependency Injection, DI) применяется в экосистеме Go. Для своего проекта я решил использовать библиотеку dig от компании Uber, и она меня по-настоящему впечатлила.

Я обнаружил, что внедрение зависимостей позволяет решить множество проблем, с которыми я сталкивался в работе над Go-приложениями: злоупотребление функцией init и глобальными переменными, чрезмерная сложность настройки приложений и др.

В этой статье я расскажу об основах внедрения зависимостей, а также покажу пример приложения до и после применения этого механизма (посредством библиотеки dig).
Читать дальше →

Мне не страшен ваш NDA

Reading time14 min
Views125K
Это громкая и страшная аббревиатура из трёх неприличных букв. Хотите поучаствовать в тендере, устраиваетесь на работу, нужно получить данные — вам подсовывают эту бумажку, мол, подпиши сначала, а то нашли дураков без NDA тебе что-нибудь рассказывать. При этом в большинстве случаев вы ничего сверхсекретного или коммерчески важного не узнаете, но процедура подписания NDA стала неким таинством посвящения, которое стороны выполняют не особо задумываясь над смыслом.

Это так же как вы неизбежно получите требование вместе с учредительными документами предоставить выписку из ЕГРЮЛ не старше 30 дней. Хотя всё доступно в онлайне, все распечатывают эту выписку из интернета, заверяют её и передают контрагенту, который даже не смотрит её, потому что всё есть в интернете. Ну, вы поняли, короче, отечественную любовь к таинствам.

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

Монады для Go-программистов

Reading time12 min
Views23K

Монады используются для компоновки функции (function composition) и избавления от связанного с этим утомительного однообразия. После семи лет программирования на Go необходимость повторять if err != nil превращается в рутину. Каждый раз, когда я пишу эту строку, я благодарю Gopher’ов за читабельный язык с прекрасным инструментарием, но в то же время проклинаю за то, что чувствую себя наказанным Бартом Симпсоном.


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

О функциональности Go

Reading time6 min
Views17K
Насколько объектно Go ориентирован многократно и эмоционально обсуждалось. Попробуем теперь оценить насколько он функционален. Заметим сразу, оптимизацию хвостовой рекурсии компилятор не делает. Почему бы? «Это не нужно в языке с циклами. Когда программист пишет рекурсивный код, он хочет представлять стек вызовов или он пишет цикл.» — замечает в переписке Russ Cox. В языке зато есть полноценные lambda, closure, рекурсивные типы и ряд особенностей. Попробуем их применить функциональным манером. Примеры покажутся синтетическими оттого, что во первых написаны немедленно исполняемыми в песочнице и написаны на процедурном все же языке во вторых. Предполагается знакомство как с Go так и с функциональным программированием, разъяснений мало но код комментирован.
Читать дальше →

Конфиденциальные транзакции в Monero, или как перевести неизвестно что неизвестно куда

Reading time7 min
Views7.1K
Мы продолжаем наш цикл об устройстве блокчейна Monero, и сегодняшняя статья будет посвящена протоколу RingCT (Ring Confidential Transactions), в котором представлены конфиденциальные транзакции и новые кольцевые подписи. К сожалению, в интернете мало информации о том, как он работает, и мы попытались восполнить этот пробел.

image

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

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

Протокол RingCT


Одна из возможных атак на cryptonote-валюты — анализ блокчейна, основанный на знании суммы и времени отправленной транзакции. Это позволяет
Читать дальше →

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

Reading time13 min
Views35K
image

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

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

Балансировать структуру данных вероятностно проще, чем явно обеспечивать баланс. Для многих задач списки пропуска это более естественное представление данных по сравнению с деревьями. Алгоритмы получаются более простыми для реализации и, на практике, более быстрыми по сравнению со сбалансированными деревьями. Кроме того, списки с пропусками очень эффективно используют память. Они могут быть реализованы так, чтобы на один элемент приходился в среднем примерно 1.33 указатель (или даже меньше) и не требуют хранения для каждого элемента дополнительной информации о балансе или приоритете.
Читать дальше →

Используем высокие разрешения на неподдерживающих их видеокартах

Reading time6 min
Views136K
Засматриваетесь на 4K UHD-мониторы, но ваш лаптоп не поддерживает высокие разрешения? Купили монитор и миритесь с частотой обновления в 30Гц? Повремените с апгрейдом.

TL;DR: 3840×2160@43 Гц, 3200×1800@60 Гц, 2560×1440@86 Гц на Intel HD 3000 Sandy Bridge; 3840×2160@52 Гц на Intel Iris 5100 Haswell.

Предыстория


Давным-давно, когда все мониторы были большими и кинескопными, компьютеры использовали фиксированные разрешения и тайминги для вывода изображения на экран. Тайминги были описаны в стандарте Display Monitor Timings (DMT), и не существовало универсального метода расчета таймингов для использования нестандартного разрешения. Мониторы отправляли компьютеру информацию о себе через специальный протокол Extended display identification data (EDID), который содержал DMT-таблицу с поддерживаемыми режимами. Шло время, мониторам стало не хватать разрешений из DMT. В 1999 году VESA представляет Generalized Timing Formula (GTF) — универсальный способ расчета таймингов для любого разрешения (с определенной точностью). Всего через 3 года, в 2002 году, его заменил стандарт Coordinated Video Timings (CVT), в котором описывается способ чуть более точного рассчитывания таймингов.

Оба стандарта были созданы с учетом особенностей хода луча в электро-лучевой трубке, вводились специальные задержки для того, чтобы магнитное поле успело измениться. Жидкокристаллические мониторы, напротив, таких задержек не требуют, поэтому для них был разработан стандарт CVT Reduced Blanking (CVT-R или CVT-RB), который является копией CVT без задержек для CRT, что позволило значительно снизить требуемую пропускную способность интерфейса. В 2013 году вышло обновление CVT-R c индексом v2, но, к сожалению, открытого описания стандарта в интернете нет, а сама VESA продает его за $350.

История


Наконец-то настала эра высокой плотности пикселей и на ПК. На протяжении последних нескольких лет, нас встречал театр абсурда, когда на мобильные устройства ставят пятидюймовые матрицы с разрешением 1920×1080, полки магазинов уставлены большими 4K-телевизорами (хоть на них и смотрят с расстояния 2-4 метров), а мониторы как были, так и оставались с пикселями с кулак. Подавляющее большинство говорит, что Full HD выглядит «достаточно хорошо» и на 27" мониторе, забывая, что предыдущее «достаточно хорошо» чрезвычайно быстро ушло после выхода iPad с Retina. Вероятнее всего, такая стагнация произошла из-за плохой поддержки высокой плотности пикселей в Windows, которая более-менее устаканилась только к выходу Windows 8.1.
Читать дальше →

С — не низкоуровневый язык

Reading time11 min
Views80K


Ваш компьютер не является быстрой версией PDP-11


Привет, Хабр!

Меня зовут Антон Довгаль, я С (и не только) разработчик в Badoo.

Мне попалась на глаза статья Дэвида Чизнэлла, исследователя Кембриджского университета, в которой он оспаривает общепринятое суждение о том, что С — язык низкого уровня, и его аргументы мне показались достаточно интересными.

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

Производители процессоров не одиноки в этом. Разработчики компиляторов C/C++ тоже внесли свою лепту.
Читать дальше →

Ваш стиль чтения книг много говорит о вашем интеллекте — и вот почему

Reading time11 min
Views223K


Расскажем, почему у умнейших людей в мире — горы книг, которых они не читают


Если вы любите читать настолько же, насколько и я, то поход в книжный для вас — как вылазка в кондитерскую для ребенка.

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

Естественно, вы вытаскиваете кредитку или нажимаете кнопочку «Купить».

И книги накапливаются. У вас на полках. В спальне. В машине. Может быть, даже в ванной.

Наиболее самозабвенные библиофилы изыскивают место там, где ранее никто книг поставить не догадывался:


Источник: http://bit.ly/2JRrqbk

И по мере того, как накапливаются книги, растет и ваша алчность. Нет, не стремление прочесть все книги, которые вы покупаете. Жажда не дочитывать тех книг, к которым вы приступили.

Если следующая сентенция — про вас, то мне предстоит вас обрадовать.

«Даже если у вас нет времени прочитать их все, переполнение книжных полок или ридера идет вам на пользу».
— Джессика Стиллмен

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

Переведено в Alconost
Читать дальше →

Видеонаблюдение с использованием смартфона — плюсы и минусы

Reading time4 min
Views73K
image

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

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

После завершения золотой лихорадки: перспективы технологии блокчейн

Reading time8 min
Views15K
Отношение общественности к технологии блокчейн (blockchain) кардинальным образом изменилось в прошлом году, когда курс криптовалюты биткойн вырос с $750 в январе до $20 000 в декабре 2017 г. Неудивительно, что в условиях такого ажиотажа люди забыли о рисках, связанных с криптовалютами. Но самое интересное нас ждет впереди. В этой статье мы поговорим о том как блокчейн и другие новые альтернативные технологии DLT находят практическое применение в современном мире.


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

Лучшие англоязычные доклады с HighLoad++ 2017

Reading time5 min
Views5.7K
В продолжение "разбора полетов" с HighLoad++ 2017 мы подготовили небольшой обзор пяти лучших (по мнению участников конференции) англоязычных докладов.

Наивысших оценок удостоились темы, касающиеся использования ProxySQL (в ТОП-5 попало целых два доклада об этом инструменте), тестирования приложений в публичном облаке Amazon, а также принципы логгирования в масштабах, когда это становится проблемой, и мониторинг Apache Kafka.



Видеозаписи всех докладов HighLoad++ 2017 мы только что выложили в свободный доступ. Полный список из 150 докладов на нашем YouTube-канале в этом плей-листе.

Кроме этого плейлиста в канале несколько сотен видео по базам данных, архитектурам, масштабированию, очередям, машинному обучению и другим highload-премудростям :)

ICO 2.0 и токенизация бизнесов

Reading time6 min
Views2.7K
Привет, хабравчане! Я — программист с 15-летним опытом разработки. В свое время удалось поработать как над системами учета, так и над финансовыми инструментами и веб-сайтами. Я застал разработчиком те времена, когда OpenSource еще называли бесполезной тратой времени и наблюдал с самого начала его эволюцию в ключевой двигатель технологий.

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

Появились идея и желание реализовать проект, который сможет упростить процедуру доступа к ICO компаниям не из ИТ и финтек индустрий, повысить безопасность вложений в эти проекты и, тем самым, поддержать новый виток развития технологий своими силами на столько, на сколько это будет возможно.

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

Установка Archlinux c полным шифрованием системы и LVM на LUKS

Reading time8 min
Views32K
В данном посте вы прочитаете немного о моих странных изыскания во время вынужденного отпуска по болезни. Речь пойдёт сразу о нескольких вещах, которые не являются «best practice», но так же тоже можно! Итак, здесь будет туториал о том, как установить Archlinux(мой любимый дистр) так, чтобы:

  • без отдельного /boot (просто в /root)
  • / на lvm
  • lvm внутри luks-контейнера
  • с UEFI
  • в виртуальной машине.
  • с secure boot(«сложна», в виртуалке вряд ли получится)

Примечательно, что зашифровано будет всё, кроме EFI system partition с единственным файлом grubx64.efi — EFI-приложением для запуска grub.

Если заинтересовались, — добро пожаловать под кат!
Читать дальше →

Эта гениальная карта объясняет, как всё в физике подогнано друг к другу

Reading time2 min
Views60K

Источник изображения: DominicWalliman/YouTube

От пространства-времени до теории хаоса


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

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity