Pull to refresh
2
Karma
0.1
Rating
Иван @roswell

User

  • Posts
  • Comments

Сортировка декартовым деревом

Edison corporate blogProgrammingAlgorithms
Свежий взгляд на традиционные концепции. Сегодня будет такой «декарт» которого в школе не проходили.


Суть алгоритма в том, что на основании массива строится так называемое декартово дерево. А из построенного декартового дерева очень легко получить все элементы в порядке возрастания или убывания.
Траффик
Total votes 20: ↑17 and ↓3 +14
Views9.4K
Comments 6

News

Show more

Валидация параметров конфигурации Spring Boot при запуске

Java
Translation
Tutorial

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


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


Spring Boot предлагает нам удобный способ валидации параметров конфигурации. Мы собираемся связать входные значения со @ConfigurationProperties и использовать Bean Validation для их валидации.

Читать дальше →
Total votes 6: ↑6 and ↓0 +6
Views2.8K
Comments 2

Какие английские слова IT-лексикона мы неправильно произносим чаще всего

EPAM corporate blogLearning languages
Пока пара новых статей на технические темы еще в процессе написания, я решил опубликовать небольшой лингвистический материал. Достаточно часто замечаю, что коллеги, у которых английский язык — не родной, неправильно произносят некоторые характерные для IT сферы слова. И дело здесь не в том, насколько аутентично произносятся отдельные звуки, а именно в транскрипции. Регулярно встречал ситуации при общении с носителями, когда неправильно произносимое слово приводило к недопониманиям.

Дальше я приведу несколько наборов слов, сгруппированных по типовым ошибкам. К каждому слову будет приложена транскрипция, приблизительная транскрипция на русском и ссылка на более детальную информацию в словаре. Так как большинство IT компаний все-таки работает с Северной Америкой, то транскрипции будут из US English.
Читать дальше →
Total votes 309: ↑308 and ↓1 +307
Views156.9K
Comments 486

О чем молчит EXPLAIN, и как его разговорить

Тензор corporate blogPostgreSQLDatabase Administration
Sandbox
Классический вопрос, с которым разработчик приходит к своему DBA или владелец бизнеса — к консультанту по PostgreSQL, почти всегда звучит одинаково: «Почему запросы выполняются на базе так долго?»

Традиционный набор причин:

  • неэффективный алгоритм
    когда вы решили сделать JOIN нескольких CTE по паре десятков тысяч записей
  • неактуальная статистика
    если фактическое распределение данных в таблице уже сильно отличается от собранной ANALYZE'ом в последний раз
  • «затык» по ресурсам
    и уже не хватает выделенных вычислительных мощностей CPU, постоянно прокачиваются гигабайты памяти или диск не успевает за всеми «хотелками» БД
  • блокировки от конкурирующих процессов

И если блокировки достаточно сложны в поимке и анализе, то для всего остального нам достаточно плана запроса, который можно получить с помощью оператора EXPLAIN (лучше, конечно, сразу EXPLAIN (ANALYZE, BUFFERS) ...) или модуля auto_explain.

Но, как сказано в той же документации,
«Понимание плана — это искусство, и чтобы овладеть им, нужен определённый опыт, …»
Но можно обойтись и без него, если воспользоваться подходящим инструментом!
Читать дальше →
Total votes 38: ↑38 and ↓0 +38
Views13.9K
Comments 77

Как «Историю игрушек 2» Pixar удалили дважды: сначала случайно, а потом из-за стремления к совершенству

Working with 3D-graphicsBackupComputer Animation
Translation
image

«Тогда-то мы и заметили это впервые, на примере Вуди».

«Ларри Катлер зашёл в каталог и как раз говорил об установке исправления для Вуди или его шляпы. Он посмотрел в каталог, и там было около 40 файлов, потом заглянул ещё раз, а там осталось всего четыре».

«Затем мы увидели, что начали пропадать последовательности кадров, и подумали: „Боже мой!“»

«Я схватил телефонную трубку… „отключайте машину!“»

Так Орен Джейкоб, бывший главный технический директор Pixar, тогда работавший помощником технического директора Toy Story 2, вспоминает момент, когда они обнаружили, что фильм удаляется с серверов компании после выполнения ошибочной команды, уничтожая два месяца и сотни человеко-часов работы.
Читать дальше →
Total votes 91: ↑87 and ↓4 +83
Views39.9K
Comments 87

А это нормально вообще? Проблема нормы в психологии

Brain
Понятие нормы – это одно из фундаментальных понятий в психологии. Любая коррекционная работа начинается с того, что мы решаем, что является нарушением (которое можно устранить или, во всяком случае, скомпенсировать), а что – конструктивной особенностью отдельно взятого индивидуума. Многие люди на том или ином этапе своей жизни задаются вопросом о психологической норме. Нормален ли я? Нормален ли мой ребенок? Нормально ли то, что делает мой партнер? Сегодня, соответственно, мы попытаемся разобраться, что означает слово «нормально» применительно к душевной жизни.

Начать здесь нужно с того, что у этого слова может быть несколько разных значений. Одни и те же феномены могут быть «нормальными» с одной точки зрения и «ненормальными» – с другой.

Во-первых, мы можем понимать норму статистически. Многие психологические и психофизиологические характеристики вариабельны в широком диапазоне, и разброс их значений можно описать через нормальное распределение. Если мы будем исследовать какой-то вариант интеллекта (например, измеряя способность решать типовые задачи из тестов Айзенка), то мы увидим небольшое количество исключительно эффективных испытуемых, небольшое количество исключительно неэффективных и много промежуточных, средних результатов. Эти средние результаты мы можем считать нормативными, а краевые результаты, соответственно, интерпретировать как одаренность или, наоборот, интеллектуальный дефицит. Но тут сразу возникает резонный вопрос: если «колокольчик» нормального распределения имеет плавную форму, то что дает нам основание для выделения в нем качественно различных областей? На каком основании мы считаем то или иное значение характеристики пороговым, задающим границы нормы?
Читать дальше →
Total votes 33: ↑30 and ↓3 +27
Views12.1K
Comments 46

Мне нравятся картонные человечки

Personnel ManagementReading room
Краткое содержание статьи — в конце текста.

Леха – отличный парень. Хорошо работает, исполнительный, с идеями, перспективный. Сделали с ним пару отличных проектов. Но он бегает от уплаты алиментов на ребенка от первого брака. Прям приходит и просит, чтобы как-то скрыть его доход, и «платить ей поменьше».

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

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

А я, когда всё это узнаю, думаю – ё ж твою через коромысло, вот нафига мне это знание?
Читать дальше →
Total votes 123: ↑102 and ↓21 +81
Views24K
Comments 121

Файл дескриптор в Linux с примерами

System Programming*nixServer Administration
Однажды, на одном интервью меня спросили, что ты будешь делать, если обнаружишь неработающий сервис из-за того, что на диске закончилось место?

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

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

Интервьюер прервал меня на последнем слове, дополнив свой вопрос: «Предположим, что данные нам не нужны, это просто дебаг лог, но приложение не работает из-за того, что не может записать дебаг»?

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

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

Интервьюер остался доволен, а я нет.

Тогда я подумал, почему человек, проверяющий мои знания, не копает глубже? А что, если данные все-таки важны? Что если мы не можем перезапускать процесс, и при этом этот процесс пишет на файловую систему в раздел, на котором нет свободного места? Что если мы не можем потерять не только уже записанные данные, но и те данные, что этот процесс пишет или пытается записать?
Читать дальше →
Total votes 136: ↑136 and ↓0 +136
Views45K
Comments 19

ООП, «святая троица» и SOLID: некоторый минимум знаний о них

ООP

Необходимое вступление


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


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


Столь малые гарантии поднимают вопросы о причинах, по которым статья пишется. Я считаю, что этим вещам должны учить везде, где учат программированию, вплоть до уроков информатики в школах с углублённым её изучением. Тем не менее, для меня стала пугающе нормальной ситуация, когда я узнаю, что собеседник мой коллега, причём работающий уже не первый год, но про инкапсуляцию «что-то там слышал». Необходимость собрать всё это в одном месте и давать ссылку при возникновении вопросов зрела давно. А тут ещё и мой «pet-project» дал мне изрядно пищи для размышлений.


Тут мне могут возразить, что учить эти вещи в школе рановато, и вообще на ООП свет клином не сошёлся. Во-первых, это смотря как учить. Во-вторых, 70% материала этой статьи применимо не только к ООП. Что я буду отмечать отдельно.



Читать дальше →
Total votes 88: ↑82 and ↓6 +76
Views94.5K
Comments 79

Ася Патрышева: «Интернет — это уже не просто сеть. Это жизнь»

DataArt corporate blogHistory of ITInterview


Ася Патрышева — первая девушка в Петербурге, получившая нодовый адрес Фидо, первая в истории российского интернета обладательница частного домена kenga.ru. Ася работала дизайнером в Nevalink, вебмастером в «Ситилайн», студии Артемия Лебедева и в Intel, затем основала ставший популярным российский информационный ресурс о туризме и путешествиях Travel.ru. Сейчас она помогает DataArt развивать платформу самопроверки для IT-специалистов Skillotron, а в интервью рассказала о романтическом периоде истории интернета, первых провайдерах и сообществе FidoNet.
Читать дальше →
Total votes 31: ↑29 and ↓2 +27
Views9.6K
Comments 46

Большое интервью с Клиффом Кликом — отцом JIT-компиляции в Java

JUG Ru Group corporate blogProgrammingJavaConferencesDistributed systems

Клифф Клик — CTO компании Cratus (IoT сенсоры для улучшения процессов), основатель и сооснователь нескольких стартапов (включая Rocket Realtime School, Neurensic и H2O.ai) с несколькими успешными экзитами. Клифф написал свой первый компилятор в 15 лет (Pascal для TRS Z-80)! Наиболее известен за работу над С2 в Java (the Sea of Nodes IR). Этот компилятор показал миру, что JIT может производить качественный код, что стало одним из факторов становления Java как одной из основных современных программных платформ. Потом Клифф помог компании Azul Systems построить 864-ядерный мейнфрейм с софтом на чистой Java, который поддерживал паузы GC на 500-гигабайтной куче в пределах 10 миллисекунд. Вообще, Клифф успел поработать над всеми аспектами JVM.
 
Этот хабрапост — большое интервью с Клиффом. Мы поговорим на следующие темы:


  • Переход к низкоуровневым оптимизациям
  • Как делать большой рефакторинг
  • Модель стоимости
  • Обучение низкоуровневым оптимизациям
  • Практические примеры улучшения производительности
  • Зачем создавать свой язык программирования
  • Карьера перформанс-инженера
  • Технические челленжи
  • Немного про аллокацию регистров и многоядерность
  • Самый большой челленж в жизни

Интервью ведут:


  • Андрей Сатарин из Amazon Web Services. В своей карьере успел поработать в совершенно разных проектах: тестировал распределенную базу данных NewSQL в Яндексе, систему облачного детектирования в Лаборатории Касперского, многопользовательскую игру в Mail.ru и сервис расчёта валютных цен в Deutsche Bank. Интересуется тестированием крупномасштабных backend- и распределённых систем.
  • Владимир Ситников из Netcracker. Десять лет работает над производительностью и масштабируемостью NetCracker OS — ПО, используемого операторами связи для автоматизации процессов управления сетью и сетевым оборудованием. Увлекается вопросами производительности Java и Oracle Database. Автор более десятка улучшений производительности в официальном PostgreSQL JDBC-драйвере.
Читать дальше →
Total votes 68: ↑67 and ↓1 +66
Views14.8K
Comments 9

Умный парсер числа, записанного прописью

Programming.NETAlgorithmsImage processingC#


Пролог


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


Умным данный парсер делает возможность извлечения чисел из текста с ошибками, допущенными в результате некорректного ввода или в результате оптического распознавания текста из изображения (OCR).


Для ленивых:
Ссылка на проект github: ссылка.


Читать дальше →
Total votes 137: ↑136 and ↓1 +135
Views24K
Comments 59

Закон Гей-Люссака, коллоидные растворы и сопромат для идеальных профитролей

PhysicsDIYLifehacks for geeksChemistry
Tutorial

Дополнение: В конце поста есть обновленные рекомендации.

Внесем легкую нотку научного безумия в традиционную кулинарию. Сегодня мы поговорим о некоторых следствиях из уравнения Менделеева-Клайперона и коллапсе газовых пузырей при изменении температуры. А еще затронем особенности молекулярных цепей крахмала и те коллоидные растворы, которые он образует. Просто ковыряться в уравнениях скучно, поэтому совместим приятное с полезным. Создадим идеальный профитроль. Сегодня у нас два основных объекта для изучения — заварное тесто и заварной крем со взбитыми сливками. Естественно, все это безобразие мы будем творить исключительно во славу науки. Ну и заодно разберемся в тех процессах, которые не описываются в кулинарных книгах.

В конце концов, зря я что ли потратил 28 яиц и пару недель на эксперименты?
Читать дальше →
Total votes 137: ↑137 and ↓0 +137
Views41K
Comments 151

Нотной грамоте учат неправильно*

Lifehacks for geeksSoundBrain

ФейспалмПреподаватели готовы разделить с вами все таинства музыкальной теории но не раньше, чем вы научитесь читать эти закорючки самостоятельно.


Предполагается, что студент должен страдать самостоятельно освоить ноты, путем многократного повторения. И вообще, если «ниасилил», значит у тебя нет Таланта — иди мести двор.


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


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


* Дисклеймер

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


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


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


Эффективность я оценивал исключительно на себе, поскольку сей субъект оказался самым доступным для исследования.

Читать дальше →
Total votes 124: ↑123 and ↓1 +122
Views169.3K
Comments 212

Шпаргалки Java программиста 9: Java SE — Шпаргалка для собеседований и повторений

Website developmentProgrammingJavaDevelopment of mobile applicationsDevelopment for Android
Tutorial
Данная статья в первую очередь предназначена для подготовки к собеседованиям на позицию Java разработчика (на самом деле, это шпаргалка, которую я писал для себя в течении многих лет, и повторяю при каждом новом поиске работы).

Предполагается. что вы знакомы с многими функциями из Java SE, поэтому в основном информация дается кратко. Конечно, можно использовать эту статью и просто для обучения основам Java SE платформы (но в этом случае, после чтения статьи вам скорее всего придется обратиться к другим источникам).

image

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

Внимание: я не буду касаться вопросов по самому языку Java (вроде для чего нужно слово final или чем overriding отличается от overloading), это потребует отдельной статьи, это вопросы именно по Java SE (6-9) платформе.
Читать дальше →
Total votes 30: ↑28 and ↓2 +26
Views103.4K
Comments 10

От четырёх до тридцати двух

History of IT
Recovery mode

Часть 1: От четырёх до восьми




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

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

Кто-то начинал с больших гудящих машин размером с комнату, кто-то с настольных домашних, кто-то собирал свой первый компьютер сам, по статьям в журналах. В каждом из таких направлений появлялись свои уникальные традиции, общие интересы, субкультура.
Читать дальше →
Total votes 55: ↑54 and ↓1 +53
Views30.6K
Comments 92

Попиксельная заливка экрана в Wolfenstein 3D

ProgrammingAssemblerGame developmentCMathematics
Translation
В коде id Software порой встречаются бесподобные жемчужины. Самая знаменитая — это, конечно, 0x5f3759df, удостоившаяся даже комикса на xkcd. Здесь же речь пойдёт о заливке экрана: пиксели закрашиваются по одному в случайном порядке, без повторов. Как это сделано?

Читать дальше →
Total votes 152: ↑151 and ↓1 +150
Views40.1K
Comments 96

Чистый код на PHP

Mail.ru Group corporate blogPHPProgrammingPerfect codeDesigning and refactoring
Translation


Это принципы разработки ПО, взятые из книги Clean Code Роберта Мартина и адаптированные для PHP. Это руководство не по стилям программирования, а по созданию читабельного, многократно используемого и пригодного для рефакторинга кода на PHP.


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


Статья вдохновлена clean-code-javascript.

Читать дальше →
Total votes 69: ↑61 and ↓8 +53
Views93.3K
Comments 179

32 березовые палки или системы зажигания ракетного двигателя

Popular scienceAstronauticsPhysics

Сейчас, в двадцать первом веке, есть космические ракеты, для запуска которых используются детали из дерева. Тридцать две березовые палки являются важным элементом системы запуска двигателей. И если страну-производитель таких ракет вы, наверняка, угадали (да, это Россия, а ракеты — семейство «Союз»), то от презрительного отношения к такому инженерному решению я бы вас предостерег — это будет серьезной ошибкой. Почему?
Читать дальше →
Total votes 105: ↑105 and ↓0 +105
Views59.4K
Comments 104

Чёртова дюжина странных игр

Games and game consolesLogic games


Я люблю разные игры. Например, те, что могут меня удивить. В этой подборке я перечислил игры и почти игры, в хорошем смысле этого слова странные. Я сознательно игнорирую в обзоре симуляторы козлов и хлебушка, игры с необычным графическим дизайном (иначе статья лопнет по швам) и очень известные игры, такие как Dear Esther. И ни в коем случае не претендую при этом на полноту изложения. Просто предлагаю скоротать часок-другой во время праздников, если вам станет любопытно.
Читать дальше →
Total votes 23: ↑23 and ↓0 +23
Views30.2K
Comments 46
1

Information

Rating
2,680-th
Location
Россия
Registered
Activity