Pull to refresh
60
0
Viktor @wentout

системный анализ

Send message

tig — улучшаем продуктивность работы с git

Reading time3 min
Views44K

Всем привет! Хочу рассказать о консольной утилите, которая значительно увеличила мою продуктивность работы с Git, и, надеюсь, ускорит и вашу также. Называется она tig и была написана канадским программистом Джонасом Фонсека (Jonas Fonseca) ещё в далёком 2006-м году, но по настоящий день она активно развивается и поддерживается в великолепном состоянии. Я хочу показать её функционал (внимание, есть относительно тяжелые gif-ки внутри) и поделиться самыми удобными способами использования.


Читать дальше →
Total votes 107: ↑105 and ↓2+103
Comments47

Теория программирования: Вариантность

Reading time13 min
Views41K

Здравствуйте, меня зовут Дмитрий Карловский и я… хочу поведать вам о фундаментальной особенности систем типов, которую зачастую или вообще не понимают или понимают не правильно через призму реализации конкретного языка, который ввиду эволюционного развития имеет много атавизмов. Поэтому, даже если вы думаете, что знаете, что такое "вариантность", постарайтесь взглянуть на проблематику свежим взглядом. Начнём мы с самых основ, так что даже новичок всё поймёт. А продолжим без воды, чтобы даже профи было полезно для структурирования своих знаний. Примеры кода будут на псевдоязыке похожем на TypeScript. Потом будут разобраны подходы уже нескольких реальных языков. А если же вы разрабатываете свой язык, то данная статья поможет вам не наступить на чужие грабли.


а вдруг там лис?

Читать дальше →
Total votes 47: ↑43 and ↓4+52
Comments62

Ликбез по типизации в языках программирования

Reading time12 min
Views516K
image

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

В полной версии находится подробное описание всех видов типизации, приправленное примерами кода, ссылками на популярные языки программирования и показательными картинками.
Читать дальше →
Total votes 239: ↑232 and ↓7+225
Comments180

Почему здравый смысл важнее паттернов, а Active Record не так уж и плох

Reading time6 min
Views24K
Так уж вышло, что разработчики, особенно молодые, любят паттерны, любят спорить о том, какой паттерн нужно применять здесь или там. Спорить до хрипоты: это фасад или прокси, а может даже синглтон. А если у вас не чистая, гексагональная архитектура, то некоторые разработчики готовы сжечь на костре Святой Инквизиции.

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

А наличие во фреймворке нужных паттернов никак не гарантирует их правильного и осознанного применения.


Читать дальше →
Total votes 38: ↑35 and ↓3+40
Comments23

Великий раскол в import: проясняем неопределенность с импортом в Typescript

Reading time5 min
Views11K
Перевод статьи подготовлен в преддверии старта курса «Разработчик React.js»




Я довольно долго работаю с typescript, и у меня было много проблем с тем, чтобы разобраться с его модулями и советующими настройками, и должен сказать, вокруг них и вправду много непонятного. Пространства имен, import * as React from 'react', esModuleInterop и т.д. Поэтому давайте разберемся из-за чего поднялась вся шумиха.

Я не буду говорить о пространствах имен как о модульной системе в typescript, поскольку идея оказалась не лучшей (особенно учитывая текущий вектор развития), и этим никто сейчас не пользуется.
Читать дальше →
Total votes 17: ↑17 and ↓0+17
Comments2

Ненужные расширения для VS Code

Reading time7 min
Views42K
Недавно я занялся тщательным исследованием VS Code и сделал несколько интересных находок. Как оказалось, в редакторе есть довольно много возможностей и настроек, позволяющих отлично решать те же задачи, которые решают многие популярные расширения.



Здесь речь пойдёт о шести сферах применения расширений, в которых эти расширения могут быть заменены стандартными механизмами VS Code.
Читать дальше →
Total votes 48: ↑44 and ↓4+53
Comments33

Мои любимые трюки в JavaScript

Reading time7 min
Views19K

Приветствую. Представляю вашему вниманию перевод статьи «My Favorite JavaScript Tips and Tricks», опубликованной 28 июля 2020 года автором Tapas Adhikary



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


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

Читать дальше →
Total votes 20: ↑15 and ↓5+16
Comments28

Почему Array.isArray(Array.prototype) возвращает true?

Reading time7 min
Views7.9K

Сегодня мы с вами разберемся в следующем: что за метод такой Array.isArray(), как он устроен под капотом, что изменилось с ним после выхода ES6, почему он возвращает для Array.prototype значение true и еще много связанных с этим методом тем.

Читать далее
Total votes 19: ↑18 and ↓1+26
Comments8

Webpack: руководство для начинающих

Reading time9 min
Views286K


Доброго времени суток, друзья!

Представляю вашему вниманию перевод статьи «Webpack: A gentle introduction» автора Tyler McGinnis.

Перед изучением новой технологии задайте себе два вопроса:

  1. Зачем нужен этот инструмент?
  2. Какие задачи он выполняет?

Если вы не можете ответить на эти вопросы, возможно, вам не нужна изучаемая технология. Давайте попробуем ответить на эти вопросы применительно к Webpack.
Читать дальше →
Total votes 8: ↑8 and ↓0+8
Comments4

Основы Ansible, без которых ваши плейбуки — комок слипшихся макарон, часть 2

Reading time17 min
Views65K

Я продолжаю выразительно пересказывать документацию Ансибла и разбирать последствия её незнания (ссылка на предыдущую часть).


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


Мы будем разбирать каждый элемент инвентори (кроме host_group_vars plugin) и обсуждать зачем он, как его использовать правильно, и как неправильно.


Оглавление:


  • Что такое хост? (и немного про транспорты)
  • Доступ IP vs FQDN; inventory_hostname vs ansible_host
  • ansible_user — писать или не писать?
  • Группы
  • Переменные: в инвентори или в плейбуку?
  • Классификация инвентори по происхождению.
Читать дальше →
Total votes 25: ↑24 and ↓1+33
Comments16

Основы Ansible, без которых ваши плейбуки — комок слипшихся макарон

Reading time12 min
Views144K

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


Для исправления этой вселенской несправедливости я решил написать введение в Ансибл для тех, кто его уже знает. Предупреждаю, это не пересказ манов, это лонгрид в котором много букв и нет картинок.


Ожидаемый уровень читателя — уже написано несколько тысяч строк ямла, уже что-то в продакшене, но "как-то всё криво".

Читать дальше →
Total votes 88: ↑86 and ↓2+108
Comments67

Как работает доказательство Гёделя

Reading time8 min
Views75K

Его теоремы о неполноте разгромили поиск математической теории всего. Почти сто лет спустя мы всё ещё пытаемся осмыслить последствия этого.




В 1931 году австрийский логик Курт Гёдель провернул, вероятно, один из самых потрясающих интеллектуальных трюков в истории.

Математики той эпохи искали неколебимые основы математики: набор базовых фактов, аксиом, которые были бы непротиворечивыми и полными, играя роль строительных блоков всех математических истин.

Однако шокирующие теоремы Гёделя о неполноте, опубликованные им всего лишь в 25-летнем возрасте, разбили эту мечту. Он доказал, что любой набор аксиом, который вы можете предложить на роль основы математики, неизбежно будет неполным. Всегда найдутся истинные утверждения, касающиеся чисел, которые невозможно будет доказать при помощи этих аксиом. Он также показал, что ни один набор аксиом нельзя использовать для доказательства их собственной непротиворечивости.
Читать дальше →
Total votes 81: ↑76 and ↓5+99
Comments346

Выявляем процессы с дисковой активностью в Linux

Reading time13 min
Views80K
TL;DR: статья рассказывает об удобном, быстром и надежном способе определения Linux-программ, записывающих данные на диск, что помогает в выявлении большой или аномально частой нагрузки на дисковую подсистему, а также позволяет оценить накладные расходы файловой системы. Это особенно актуально для SSD в ПК, EMMC и Flash-памяти в одноплатных компьютерах.
В ходе написания статьи обнаружилось, что запись нескольких килобайт данных на файловую систему BTRFS приводит к записи 3 мегабайт реальных данных на диск.

Введение

«Ой, ерунда, ячейки памяти на современных SSD выйдут из строя через десятки лет обычного использования, не стоит об этом беспокоиться, и уж тем более переносить swap, виртуальные машины и папку профиля браузера на HDD» — типичный ответ на вопрос о надежности твердотельных накопителей c гарантированными ≈150 TBW. Если прикинуть, сколько типичное ПО может писать данных, то кажется, что 10-20 ГБ в сутки — уже большая цифра, пусть будет максимум 40 ГБ, куда уж больше. При таких цифрах ответ вполне разумен — нужно 10 лет, чтобы достичь гарантированных значений по количеству перезаписи ячеек, при 40 ГБ записанных данных ежедневно.
Однако за 6 лет я пользуюсь уже третьим SSD: у первого вышел из строя контроллер, а второй начал перемещать данные между ячейками несколько раз в день, что оборачивалось 30-секундными задержками в обслуживании записи.

После 7 месяцев использования нового SSD я решил проверить количество записанных данных, как их сообщает сам диск через SMART.
19.7 ТБ.
Всего за 7 месяцев я использовал 13% от гарантированного количества записанных данных, притом, что он настроен в соответствии с рекомендациями по выравниваю разделов и настройке ФС, swap у меня почти не используется, диски виртуальных машин размещены на HDD!
Читать дальше →
Total votes 119: ↑117 and ↓2+115
Comments90

Лучшие GitHub-репозитории для веб-разработчиков

Reading time5 min
Views28K
Программист тратит многие часы на разработку некоего функционала и на то, чтобы код соответствовал передовым практическим приёмам, принятым в той или иной среде. В эти часы не должно входить регулярное написание шаблонных конструкций. Программист может сильно помочь себе в деле правильной организации работы, избавив себя от ненужных дел и вложив время в изучение правильных инструментов. Хорошим подспорьем может оказаться и знание о ценных ресурсах, список которых всегда полезно держать под рукой.



Автор материала, перевод которого мы публикуем сегодня, предлагает рассмотреть несколько GitHub-репозиториев, которые, если иногда в них заглядывать, позволят веб-разработчикам улучшить свои знания и навыки, окажут содействие в написании более качественного кода, помогут работать быстрее.
Читать дальше →
Total votes 33: ↑28 and ↓5+41
Comments5

Мне надоело, что обычные продавцы выдают себя за разработчиков и позорят индустрию. Они делают мир хуже

Reading time5 min
Views123K


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

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

Мои новостные ленты были завалены обсуждениями, восхищением и критикой выпуска. Каждый раз читая что-то об этом, я испытывал непонятную почти физическую боль. Ну хорошо, главный журналист страны рассказал про мою индустрию, но рассказал не так, как хочу я. С этим можно жить. Да, со всей своей преисполненностью и трушной технарскостью, я все ещё маленький завистливый чмошник. Я тоже хочу сидеть в кофейне в Пало-Альто и смотреть, как мне выписывают чек на пять миллионов долларов. Но смотрите, я вырос в России и давно научился не обращать внимания на свою патологическую зависть. Мне давно не бывает от нее больно.

Бомбанул я точно не от зависти — и я долго не знал, почему.
Читать дальше →
Total votes 352: ↑263 and ↓89+245
Comments970

10 смертных грехов спикера

Reading time4 min
Views27K


Прелюдия


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

Читать дальше →
Total votes 61: ↑51 and ↓10+41
Comments70

Дорога в ад JavaScript-зависимостей

Reading time8 min
Views26K
Каждый JavaScript-проект начинается с благих намерений, заключающихся в том, что его создатели обещают себе не использовать слишком много NPM-пакетов в ходе его разработки. Но даже если разработчики прилагают немалые усилия к тому, чтобы сдержать это обещание, NPM-пакеты постепенно проникают в их проекты. Размер файла package.json со временем растёт. А с package-lock.json после установки зависимостей происходит настоящий ужас, выражающийся в добавлениях и удалениях пакетов, особенно заметных при очередном PR…



«Всё нормально», — говорит тимлид. Остальные члены команды согласно кивают. А что ещё делать-то? Нам всем хорошо от того, что экосистема JavaScript жива и здорова. Нам не надо каждый раз изобретать колесо и пытаться решать задачи, уже решённые сообществом опенсорса.

Предположим, вы собираетесь сделать блог и хотите воспользоваться Gatsby.js. Попытайтесь добавить этот генератор сайтов в зависимости своего проекта. А теперь — принимайте поздравления. Только что в вашем проекте оказалось 19000 дополнительных зависимостей. Это нормально? Насколько сложным может стать дерево JavaScript-зависимостей? Как дерево зависимостей превращается в ад? Давайте с этим разберёмся.
Читать дальше →
Total votes 34: ↑30 and ↓4+46
Comments53

Коронавирус: почему надо действовать прямо сейчас

Reading time19 min
Views5.6M

Вступление


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

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

  • Сколько людей заболеют коронавирусом в вашем регионе?
  • Что случится, когда они начнут заболевать?
  • Что вы должны делать?
  • Когда?

Когда вы закончите читать статью, вы придёте к следующим выводам:

  • Коронавирус приближается к вам.
  • Он приближается с экспоненциальной скоростью: сперва постепенно, а потом внезапно.
  • Это вопрос нескольких дней. Может быть, неделя или две.
  • Когда это случится, ваша система здравоохранения будет перегружена.
  • Ваши сограждане будут лечиться в коридорах.
  • Изможденные медицинские работники сломаются. Некоторые погибнут.
  • Им придётся решать, кто из пациентов получит лечение, а кто умрет.
  • Единственный способ предотвратить это — социальная изоляция уже сегодня. Не завтра. Сегодня.
  • Это значит держать как можно больше людей дома, начиная с сегодняшнего дня.

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

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

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

Итак, давайте разбираться.
Много графиков и длинный текст
Total votes 424: ↑368 and ↓56+456
Comments2074

Подстава с NVMe на Линуксе

Reading time2 min
Views56K
Доброго времени суток.

Хотел обратить внимание сообщества на характерную особенность Linux при работе с несколькими NVMe SSD в одной системе. Особенно актуально будет для тех кто любит делать из NVMe программные RAID массивы.

Надеюсь, что информация приведенная ниже поможет уберечь ваши данные и избавит от досадных ошибок.
Читать дальше →
Total votes 54: ↑47 and ↓7+56
Comments33

Kha vs HTML5: Компилируем JavaScript в C++

Reading time25 min
Views5.2K

Предлагаю вашему вниманию перевод доклада Роберта Конрада с прошедшего в октябре прошлого года HaxeUp Sessions 2019 Linz. Данный доклад посвящен процессу портирования на консоли игры CrossCode, изначально написанной на HTML5. Если вам понравится перевод, то рекомендую также посмотреть его в оригинале на английском — Роберт очень веселый человек, постоянно шутит и его интересно слушать.


image


Немного об авторе: Роберт работает программистом в Deck13, одной из немногих игровых компаний, использующих свои собственные технологии (именно поэтому Роберт и выбрал эту компанию). В основном его работа связана с оптимизацией (например, недавно выпущенной игры Surge 2).

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

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity