Pull to refresh
3
0
Send message

Про злые угри и чёрные точки и добрые сальные нити (не путайте их)

Reading time8 min
Views71K
Чёрные точки = что-то не так с обменом в коже. Это устья волосяных фолликулов, закупоренные окислившейся смесью отмерших частиц эпидермиса и кожного сала. Чёрными они становятся из-за контакта сала с кислородом и последующего окисления. Чаще всего пациенты не воспринимают чёрные точки как что-то серьёзное, ищут себе простую косметическую линейку, которая им за неделю поможет, и очень расстраиваются, когда выясняется, что это не так.

image
Так выглядит механизм образования комедонов изнутри

Потому что это симптом, а проблема начинается чуть раньше. Например, с ДНК или неправильного питания. Обычно чёрные точки появляются из-за избыточной секреции сальных желёз, закупорки фолликулов секретом сальных желёз и кератиноцитами или колонизации фолликулов Propionibacterium acnes (этот анаэроб, кстати, входит в состав нормальной микрофлоры человека (сейчас cutibacterium acnes)). Упрощённо говоря, когда в волосяной фолликул набивается всякое типа мёртвой кожи, сала и грязи, начинается закупорка пор изнутри. А гигиена и косметика действуют снаружи. И сразу развею пару мифов: это не из-за сладкого и не из-за молока.

А вот сальные нити — обязательный и полезный элемент нашей кожи. Выглядят они иногда страшнее, но решение очень и очень простое.
Читать дальше →
Total votes 66: ↑45 and ↓21+35
Comments24

Все финансовые рынки мира в API Яху Финанс

Level of difficultyMedium
Reading time6 min
Views72K
В этой статье я расскажу об API агрегатора финансовых данных Yahoo! Finance. В рассказе есть один нюанс — официальное API Яху Финанс было закрыто три года назад, однако практически сразу же появилась его недокументированная работоспособная версия, которая жива до сих пор. Хочу в исследовательских целях рассказать об использовании этой работоспособной версии подробнее.
Тем более, что список рынков, данные с которых можно получать через Яху Финанс огромен. На текущий момент в нем 79 стран, включая и Россию.


Apple Inc. (AAPL) на сайте и в API Яху Финанс
Разбор API Yahoo! Finance
Total votes 15: ↑15 and ↓0+15
Comments40

Сложность простоты

Reading time31 min
Views44K


Как я писал в предисловии предыдущей статьи, я нахожусь в поисках языка, в котором я мог бы писать поменьше, а безопасности иметь побольше. Моим основным языком программирования всегда был C#, поэтому я решил попробовать два языка, симметрично отличающиеся от него по шкале сложности, про которые до этого момента приходилось только слышать, а вот писать не довелось: Haskell и Go. Один язык стал известен высказыванием "Avoid success at all costs"*, другой же, по моему скромному мнению, является полной его противоположенностью. В итоге, хотелось понять, что же окажется лучше: умышленная простота или умышленная строгость?


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

Читать дальше →
Total votes 91: ↑84 and ↓7+77
Comments278

Написание компилятора на Haskell + LLVM

Reading time20 min
Views8K

На работе я пишу почти исключительно на Python, с университетской скамьи остались некоторые знания C/C++, в одном pet-project использовал Haskell. С таким багажом знаний я взялся за написание компилятора на основе LLVM - зачем и что получилось я уже рассказывал в предыдущей статье.

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

Я кратко расскажу про необходимый минимум знаний Haskell, про свои ошибки и к каким решениям я пришел - а так же про решения, к которым я не пришел, и про которые узнал позже - и как их можно интегрировать в ваш pet-компилятор. На все это я по возможности дам ссылки на изучение.

Читать далее
Total votes 35: ↑35 and ↓0+35
Comments2

Зарплаты в ИТ. А может все-таки…

Reading time3 min
Views29K

По мотивам статей Минусы от высокой зарплаты у IT-специалистов в России и «Рост зарплат в IT это плохо? Вы же шутите, да?». Хотел сначала написать просто в комментарий, но потом понял, что интересных мыслей/параллелей вроде бы наберется на небольшую (надеюсь) заметку.

Читать далее
Total votes 26: ↑21 and ↓5+21
Comments102

Введение в программирование: заготовка игры-платформера на SDL в 300 строк C++

Reading time12 min
Views27K

Этот текст предназначен для тех, кто только осваивает программирование. Я читаю лекции по C++ на первом курсе местного университета, и в качестве практикума предлагаю запрограммировать любую игру (не выношу проектов типа "софт бронирования книг в местной библиотеке"). Соответственно, чтобы помочь начинающим, я сделал некоторое количество заготовок, с которых можно стартовать свой проект. Например, заготовку олдскульного 3д шутера в 486 строк C++ я уже описывал, а вот тут можно посмотреть, что из неё сделали первокурсники.


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



На данный момент проект содержит менее трёхсот строчек цпп:


ssloy@khronos:~/sdl2-demo/src$ cat *.cpp *.h | wc -l
296

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


Итак, поехали!

Читать дальше →
Total votes 47: ↑46 and ↓1+56
Comments128

Хорошие времена рождают слабаков

Reading time4 min
Views21K
В статье «Моё разочарование в софте» мы увидели, как программное обеспечение деградировало за последние два десятилетия. В 2019 Джонатан Блоу (разработчик игр Braid и The Whitness) выступил с докладом, в котором объяснил, почему это может происходить:



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

Кризис программного обеспечения носит системный и поколенческий характер. Скажем, первое поколение работает над проектом X. После того, как X создан и становится популярным, проходит время, и приходит следующее поколение программистов и работает уже над проектом Y, основанное на X. Им не нужно точно знать, как построен проект X, почему он был построен таким образом, или как написать альтернативный X с нуля. Они не хуже и не ленивее, у них просто нет реальной необходимости создавать X2, поскольку X уже существует и позволяет им решать многие насущные задачи.

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

Это парадокс: большинство людей могли подумать, что, если бы мы построили, например, космический корабль или сложный самолет в прошлом, то мы смогли бы построить его снова в любое время. Но нет, если бы мы не строили определенный самолет непрерывно, то спустя всего 50 лет уже легче было бы разработать новый с нуля, чем пытаться возродить старые процессы и документацию. Знания не передаются следующему поколению автоматически.
Total votes 56: ↑50 and ↓6+61
Comments61

Что делать, если всё ваше существо противится поставленной задаче

Reading time4 min
Views9.2K
image

Вопрос: Кажется, я борюсь с собой. Это происходило несколько раз и серьезно сказывалось на качестве моей жизни.

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

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

Вы бывали в таких ситуациях? Как вы погружаетесь в работу и делаете это, когда все ваше существо восстает против задачи?

Ответ Джонатана Блоу: Я 42-летний очень успешный программист, который за свою карьеру уже прошел через множество ситуаций, многие из которых сильно демотивировали. И лучший совет, который у меня есть для вас, — прекратить то, что вы делаете. Серьезно. Даже если вам кажется, что вы не в состоянии сделать это, то знайте — вы можете. Это нормально. Вы свободны. Хорошо, вы помогаете стартапу своего друга, но какова соответствующая стоимость этого? Она бы заставила вас сделать это, если бы вы знали, что это растопчет вашу душу (crushing your soul)?
Читать дальше →
Total votes 24: ↑17 and ↓7+11
Comments14

Компилятор Go: язык описания правил SSA оптимизаций

Reading time11 min
Views12K


В компиляторе gc для описания Static Single Assignment (SSA) правил оптимизаций используется специальный Лисп-подобный предметно-ориентированный язык (DSL).


Предлагаю разобрать основные элементы этого языка, его особенности и ограничения.
В качестве упражнения, добавим в Go компилятор генерацию инструкции, которую он раньше не генерировал, оптимизируя выражение a*b+c.


Это первая статья из серии про внутренности Go SSA compiler backend, поэтому помимо обзора самого DSL описания правил мы рассмотрим связанные компоненты, чтобы создать необходимую базу для нашей следующей сессии.

Читать дальше →
Total votes 43: ↑42 and ↓1+41
Comments8

Vulkan. Руководство разработчика. Пересоздание swap chain

Reading time7 min
Views3.2K


Привет! Я технический переводчик из ижевской IT-компании CGTribe, и я продолжаю делиться с вами переводами уроков Vulkan Tutorial.

Эта публикация посвящена переводу главы Swap chain recreation — последней главы раздела Drawing a triangle. Оригинальную статью вы можете найти здесь.

Содержание
Читать дальше →
Total votes 5: ↑5 and ↓0+5
Comments0

Идеальная светодиодная лампа за 21 рубль

Reading time3 min
Views79K
Удивительно осознавать, что достаточно сложное электронное устройство, которым является светодиодная лампочка, может стоить 21 рубль.

Ещё сложнее поверить, что эта лампочка безукоризненна по всем параметрам.

Читать дальше →
Total votes 174: ↑172 and ↓2+223
Comments204

Трясём стариной — или как вспомнить Ассемблер, если ты его учил 20 лет назад

Reading time11 min
Views23K
Это — тёплая, ламповая статья об Ассемблере и разработке ПО. Здесь мы не будем пытаться писать убийцу Майкрософта или Андроида. Мы будем писать убийцу 2048. Здесь не будет докера и терраформа с кубером. Зато здесь вы сможете найти большое количество материалов по Ассемблеру, которые помогут вам вновь погрузиться в мир трёхбуквенных инструкций. Доставайте пивко, и поехали. (Саундтреком к этой статье можно считать IBM 1401 a system manual)

Читать дальше →
Total votes 74: ↑68 and ↓6+89
Comments100

Больше механических клавиатур хороших и разных: новые модели, на которые стоит обратить внимание

Reading time5 min
Views36K


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

Некоторые из них — универсальные, другие — ближе к классу геймерских, есть и чисто офисные модели. Подборка, конечно же, субъективная, так что если у вас есть свои варианты хороших клавиатур — предлагайте их в комментариях.
Читать дальше →
Total votes 35: ↑33 and ↓2+44
Comments133

48 полноценных бесплатных книг для программистов (happy developer's day)

Reading time2 min
Views109K

Привет, Хабр! Немного запоздало (ко дню программиста) делюсь подборкой бесплатных книг по программированию. Все они полезные, уровень скорее профессиональный, хотя и для развития от базового тоже подойдет, но, к сожалению, на английском. Среди тем книг: .NET, Алгоритмы, Android, iOS, Angular, C, C++, C#, JS, Linux, Python. В целом, найдется почти любая тема, которая приходит в голову.

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

Читать далее
Total votes 83: ↑82 and ↓1+98
Comments55

Мой MikroTik – моя цифровая крепость (часть 1)

Reading time10 min
Views125K
В статье рассмотрены различные подходы к организации практической безопасности сетей, построенных на оборудовании MikroTik, в том числе при помощи дополнительного открытого программного обеспечения, расширяющего имеющиеся штатные возможности, что в комплексе позволяет качественно администрировать сетевые средства, а также своевременно реагировать на различные угрозы информационной безопасности.
Читать дальше →
Total votes 67: ↑64 and ↓3+85
Comments101

Civilization Сида Мейера: баг «ядерного Ганди» в том, что его не было

Reading time20 min
Views29K
Хочу поделиться с вами несколькими малоизвестными историями про серию игр Civilization, которые рассказал Сид Мейер в автобиографической книге «Жизнь в мире компьютерных игр».

Если бы я попыталась просто привести все самые интересные фрагменты книги, то мне пришлось бы просто процитировать около 85% текста. Так что я поделюсь только фактами, связанными с самой знаменитой игрой Сида Мейера. Под катом несколько фактов из истории создания Civilization, ошибки, фичи, от которых отказались в процессе создания игры, появление читов и объяснение мифа про «ядерного Ганди» от Сида Мейера.


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

MMT для UBI: что такое современная теория денег и как из неё следует, что России по карману всеобщий базовый доход

Reading time13 min
Views26K
MMT или современная теория денег (Modern Monetary Theory) — новое направление в экономической теории, объясняющего суть денег. Действующее представление о деньгах — самом важном феномене современного мира — является прямо обратным тому, что деньги из себя функционально представляют, что современная теория денег и изучает. Действующее представление о деньгах (можем назвать его modern monetary practice) основано на традиционно сложившихся, уходящих ещё в Средневековье, институтах и отношениях. По сути, господствующая сейчас экономическая теория — это рационализация институализированных в сложившейся экономической практике средневековых предрассудков. Как если бы современные медики оперировали современными медицинскими приборами, но исходили из представлений о функционировании человеческого организма времён Авиценны. 

Джон Мейнард Кейнс объяснил, что экономика работает на труде, а не деньгах, ещё в начале XX века

Чтобы понять, что такое современная теория денег, следует понять, чем она не является.

Традиционно сложившееся представление о деньгах, на котором держится вся современная финансовая (банковская) система рассматривает деньги как отдельный ресурс, продукт или средство производства. Деньги, по сложившемуся исторически представлению о них — суть и содержание экономики. А современная банковская система сложилась вокруг них, институциализировав традиционно сложившиеся отношения. То есть, современная банковская система, при всей её сложности, технологичности и продвинутости — это механизм, с помощью которого люди научились утилизировать некую экономическую энергию прежде, чем разобрались в её природе. Современная теория денег концептуализирует сложившиеся экономические отношения и изучает роль денег в экономических отношениях.
Читать дальше →
Total votes 56: ↑35 and ↓21+33
Comments299

Что такое функциональное программирование?

Reading time7 min
Views81K

Эта статья является переводом материала «What is functional programming?».

В этой статье Владимир Хориков попытается ответить на вопрос: что такое функциональное программирование?

Итак, что такое функциональное программирование? Этот термин возникает довольно часто, и каждый автор, пишущий о нем, дает собственное объяснение. На взгляд автора оригинала, самым простым и в то же время точным определением является следующее: функциональное программирование - это программирование с математическими функциями.

Математические функции не являются методами в программном смысле. Хотя мы иногда используем слова «метод» и «функция» как синонимы, с точки зрения функционального программирования это разные понятия. Математическую функцию лучше всего рассматривать как канал (pipe), преобразующий любое значение, которое мы передаем, в другое значение

Читать далее
Total votes 24: ↑19 and ↓5+22
Comments108

Процессор Эльбрус — почему это тупик для развития отечественной линейки general-purpose CPU

Reading time8 min
Views154K

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

Читать далее
Total votes 188: ↑164 and ↓24+198
Comments809

Information

Rating
Does not participate
Registered
Activity