Как стать автором
Обновить
0
0
Репецкий Максим @maksimrep

Web-developer \ DevOps

Отправить сообщение

Как Linux'овский sort сортирует строки

Время на прочтение19 мин
Количество просмотров21K

Введение


Всё началось с короткого скрипта, который должен был объединить информацию об адресах e-mail сотрудников, полученных из списка пользователей почтовой рассылки, с должностями сотрудников, полученными из базы отдела кадров. Оба списка были экспортированы в текстовые файлы в кодировке Юникод UTF-8 и сохранены с юниксовскими концами строк.


Содержимое mail.txt


Иванов Андрей;ia@example.com

Содержимое buhg.txt


Иванова Алла;маляр
Ёлкина Элла;крановщица
Иванов Андрей;слесарь
Абаканов Михаил;маляр

Для объединения файлы были отсортированы юниксовской командой sort и поданы на вход юниксовской программе join, которая неожиданно завершилась с ошибкой:


$> sort buhg.txt > buhg.srt
$> sort mail.txt > mail.srt
$> join buhg.srt mail.srt > result
join: buhg.srt:4: is not sorted: Иванов Андрей;слесарь

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


$> sort buhg.txt
Абаканов Михаил;маляр
Ёлкина Элла;крановщица
Иванова Алла;маляр
Иванов Андрей;слесарь

Выглядит как глюк сортировки в Юникоде или как проявление феминизма в алгоритме сортировки. Первое, конечно, правдоподобнее.

Читать дальше →
Всего голосов 123: ↑123 и ↓0+123
Комментарии13

Python.org рекомендует: Программирование для НЕпрограммистов

Время на прочтение5 мин
Количество просмотров43K
Предлагаем вашему вниманию подборку материалов от python.org о том, с чего начать первые шаги в программировании.




Если Вы никогда не занимались программированием раньше, эти материалы для вас. Данные туториалы не предполагают, что у вас есть какой-то опыт. (Если у вас уже есть опыт программирования, посетите Beginners Guide).
Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии3

Кроссплатформенный многопоточный TCP/IP сервер на C++

Время на прочтение16 мин
Количество просмотров90K

Решил задаться целью написать простой в использовании и при этом быстрый многопоточного TCP/IP сервера на C++ и при этом кроссплатформенный — как минимум чтобы работал на платформах Windows и Linux без требования как-либо изменять код за пределами самописной библиотеки. Ранее, на чистом C++ без библиотек вроде Qt, сетевым программировнием не занимался, и предвещал себе долгое время мучений с платформо-зависимостью. Но как оказалось всё гораздо проще чем казалось на первый взгляд, ведь в основном интерфейсы сокетов обоих систем похожи как две капли воды и различаются лишь в мелких деталях.

Читать дальше →
Всего голосов 23: ↑10 и ↓13+5
Комментарии40

Популярно об артиклях в английском языке

Время на прочтение8 мин
Количество просмотров54K
Артикли — это самые распространенные слова в английском языке. Эти невзрачные a, an и the занимают около 8,5% объема любого текста. Если немного утрировать, то из каждого часа работы с текстом вы пять минут тратите только на прочтение артиклей.

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

В общем, сегодня мы решили рассказать вам именно об артиклях. Откуда появились, как развивались исторически и как их использовать правильно сегодня. Поехали!


Читать дальше →
Всего голосов 59: ↑59 и ↓0+59
Комментарии94

Ругательства на английском, за которые не побьют (но это не точно)

Время на прочтение6 мин
Количество просмотров109K
Ругательства — это важная часть любого языка. Правильно и к месту материться — это настоящее искусство, которым далеко не все владеют на своем родном языке.

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


Всего голосов 43: ↑40 и ↓3+51
Комментарии71

NDA для разработки — «остаточная» оговорка и другие способы защитить себя

Время на прочтение2 мин
Количество просмотров4.8K
Кастомизированная разработка практически невозможна без передачи разработчику конфиденциальной информации (КИ). Иначе какая же она кастомизированная.
Чем крупнее заказчик, тем сложнее согласовать условия соглашения о конфиденциальности. Типовой договор с вероятностью, близкой к 100%, будет избыточным.

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

Чтобы иметь возможность спокойно делать свою работу, нужно иметь максимально понятный объем обязательств. Эта простая истина может быть реализована с помощью нескольких условий.
Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии6

Стоит ли хранить Google Fonts на своём сервере?

Время на прочтение22 мин
Количество просмотров23K
В последние несколько недель, по стечению обстоятельств на работе и в сторонних проектах, я узнал много о веб-шрифтах, а также много нового о Google Fonts в частности. Благодаря этому я могу дать более развернутый ответ на вопрос, который в прошлом мне казался простым: стоит ли вам хранить Google Fonts на своём сервере?

Говоря объективно, признаю, шрифты — не моя сильная сторона. Я предпочитаю более практичный подход и не зацикливаюсь на дизайне (посмотрите на этот сайт и убедитесь, что так и есть) и прежде не чувствовал необходимости в использовании нестандартных шрифтов. Конечно, они выглядят немного приятнее и «брендируют» текст. Но для основного текста толку в них мало. Я никогда не оценивал статью (или иначе относился к её содержанию), только потому что для её подачи использовался красивый шрифт. Тем не менее, мне было полностью понятно негативное влияние дополнительных шрифтов на производительность и скорость загрузки страницы, так что, возможно, из-за этого я предвзят.

Тем не менее, многие со мной могут не согласится, да и шрифты, важны они лично для меня или нет, регулярно используются многими другими разработчиками, и часто у них просто нет выбора. Давайте посмотрим, что можно сделать, чтобы и в скорости сайта не потерять, и дизайнеров довольными оставить.
Читать дальше →
Всего голосов 33: ↑33 и ↓0+33
Комментарии10

Разработка более быстрых приложений на Vue.js

Время на прочтение14 мин
Количество просмотров24K
JavaScript — это душа современных веб-приложений. Это — главный ингредиент фронтенд-разработки. Существуют различные JavaScript-фреймворки для создания интерфейсов веб-проектов. Vue.js — это один из таких фреймворков, который можно отнести к довольно популярным решениям.

Vue.js — это прогрессивный фреймворк, предназначенный для создания пользовательских интерфейсов. Его базовая библиотека направлена, в основном, на создание видимой части интерфейсов. В проект, основанный на Vue, при необходимости легко интегрировать и другие библиотеки. Кроме того, с помощью Vue.js и с привлечением современных инструментов и вспомогательных библиотек, можно создавать сложные одностраничные приложения.



В этом материале будет описан процесс создания простого Vue.js-приложения, предназначенного для работы с заметками о неких задачах. Вот репозиторий фронтенда проекта. Вот — репозиторий его бэкенда. Мы, по ходу дела, разберём некоторые мощные возможности Vue.js и вспомогательных инструментов.
Читать дальше →
Всего голосов 29: ↑20 и ↓9+23
Комментарии11

Дайджест свежих материалов из мира фронтенда за последнюю неделю №398 (13 — 19 января 2020)

Время на прочтение3 мин
Количество просмотров12K
Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него.

Читать дальше →
Всего голосов 22: ↑22 и ↓0+22
Комментарии0

10 полезных плагинов Visual Studio Code

Время на прочтение3 мин
Количество просмотров25K
Все от опытных разработчиков до начинающих джунов хотят упростить себе жизнь. Правильные инструменты могут помочь с этим.

Если в качестве среды разработки вы используете Visual Studio Code, вам повезло. Вы можете установить кучу плагинов и облегчить себе жизнь по максимуму.

Плагины очень влияют на продуктивность и подход к работе. Именно это мы обсудим ниже.

«Сперва мы меняем инструменты, а потом они меняют нас»
— Джефф Безос

Все плагины бесплатны и доступны на Visual Studio Marketplace.

Visual Studio Intellicode


image

Это самый часто скачиваемый плагин для Visual Studio (более 3 200 000 скачиваний). И, на мой взгляд, самый полезный.

Этот плагин создан, чтобы помогать разработчикам писать код. Он поддерживает огромное количество языков программирования. Visual Studio Intellicode использует методы машинного обучения. Он ищет и анализирует шаблоны, используемые в многочисленных проектах GitHub с открытым исходным кодом, и предлагает их вам, когда вы пишите код.

Читать дальше →
Всего голосов 18: ↑7 и ↓11+2
Комментарии12

Двигаемые мышкой виджеты. Drag and drop в пределах окна

Время на прочтение9 мин
Количество просмотров3.8K

Обычное понимание Drag and Drop(D&D) предполагает, что берётся, например, ссылка на файл из одного виджета и перемещается мышкой в другое окно или виджет. Далее пойдёт речь не о библиотечных функциях D&D, а о собственной реализации перемещения виджета в пределах окна и сопутствующего функционала. Код больше для примера, чем конкретного практического применения, написан в стиле Си с классами. Редактор — CodeBlocks 17.12, который перестал вылетать на Ubuntu x64 по сравнению с 16-ой версией.

image
Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии2

Знакомство с Sass модулями

Время на прочтение12 мин
Количество просмотров39K
Привет, Хабр! Представляю вашему вниманию перевод статьи «Introducing Sass Modules» автора Miriam Suzanne.

Недавно в Sass появилась функциональность, которая вам знакома по другим языкам: модульная система. Это большой шаг вперед для @import, одной из наиболее часто используемых функций в Sass. Несмотря на то, что существующая директива @import позволяет вам подключать сторонние пакеты и разделять ваши стили на поддерживаемые элементы, у неё всё же есть несколько ограничений
Читать дальше →
Всего голосов 24: ↑24 и ↓0+24
Комментарии0

Моя жизнь с Boost Graph Library

Время на прочтение25 мин
Количество просмотров9.8K
Статья, первая часть которой здесь представлена, содержит различные соображения автора, накопившиеся в ходе длительной разработки специализированной системы поиска социальных связей, базирующейся на библиотеке Boost Graph Library (BGL). В этом (техническом) разделе суммируются впечатления автора от работы с этой библиотекой, поднимаются вопросы инструментовки при создании графовых приложений и затрагиваются некоторые практические проблемы метапрограммирования на C++.
Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии7

Обзор ispmanager – панели управления хостингом и сайтами

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров37K
В этой статье разбираем панель управления сайтами и сервером ispmanager. Мы делали обзор на неё в 2019 году, и за это время многое в продукте поменялось. Поэтому сейчас вы читаете обновлённую публикацию за 2023 год.


Читать дальше →
Всего голосов 33: ↑31 и ↓2+29
Комментарии3

Шпаргалка по аббревиатурам C++ и не только. Часть 1: C++

Время на прочтение20 мин
Количество просмотров55K
Когда-то я собеседовался на должность C++ разработчика в одну приличную и даже известную контору. Опыт у меня тогда уже кое-какой был, я даже назывался ведущим разработчиком у тогдашнего своего работодателя. Но на вопросы о том, знаком ли я такими вещами, как DRY, KISS, YAGNI, NIH, раз за разом мне приходилось отвечать «Нет».

Собеседование я с треском провалил, конечно. Но упомянутые аббревиатуры потом загуглил и запомнил. По мере чтения тематических статей и книг, подготовок к собеседованиям и просто общения с коллегами я узнавал больше новых вещей, забывал их, снова гуглил и разбирался. Пару месяцев назад кто-то из коллег небрежно упомянул в рабочем чате IIFE в контексте C++. Я, как тот дед в анекдоте, чуть с печки не свалился и опять полез в гугл.


Читать дальше →
Всего голосов 52: ↑52 и ↓0+52
Комментарии29

Настраиваем top в GNU/Linux

Время на прочтение3 мин
Количество просмотров44K
Однажды мой знакомый, который на тот момент администрировал некое веб-приложение на сервере под управлением GNU/Linux, пожаловался на одного вредного администратора сервера. Тот ни в какую не хотел устанавливать htop, несмотря на все просьбы.

Я немного удивился и поинтересовался, в чём причина такого странного поведения. Если упростить, то дальнейший наш диалог получился вот таким:
Читать дальше →
Всего голосов 84: ↑81 и ↓3+78
Комментарии69

Как использовать systemd-nspawn для восстановления Linux-системы

Время на прочтение7 мин
Количество просмотров11K
Перевод статьи подготовлен специально для студентов курса «Администратор Linux».





Разбираемся со способностью systemd запускать контейнеры для восстановления корневой файловой системы поврежденной системы.

До тех пор пока будут существовать системы GNU/Linux, системным администраторам будет необходимо восстанавливаться после повреждения корневой файловой системы, случайных изменений конфигурации или других ситуаций, которые не дают системе загрузиться в «нормальное» состояние.

Читать дальше →
Всего голосов 25: ↑23 и ↓2+21
Комментарии10

Как я поступал в 18 университетов США

Время на прочтение65 мин
Количество просмотров130K
Всем привет. Меня зовут Даниил, и в этой статье я хочу поделиться с вами своей историей поступления в бакалавриат 18 университетов США. В интернете достаточно много рассказов о том, как можно учиться в магистратуре или аспирантуре совершенно бесплатно, но мало кто знает, что возможность получить полное финансирование есть и у студентов-бакалавров. Несмотря на то, что описываемые здесь события происходили давно, большая часть информации актуальна и по сей день.

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

Небольшая заметка
Имена некоторых персонажей были умышленно изменены. Глава 1 является вводной и рассказывает о том, как я дошёл до такой жизни. Вы мало что потеряете, если пропустите её.

Всего голосов 220: ↑214 и ↓6+208
Комментарии198

Делаем из Vim-а конфетку

Время на прочтение17 мин
Количество просмотров142K

Вы под давлением коллег или сокурсников из более успевающих групп решились на отчаянный шаг, способный разделить вашу жизнь на период "до" и "после" (прошли vimtutor), и теперь не знаете что делать с вашими новообретёнными способностями? А может вы всё ещё сидите в какой-нибудь IDE и в ус не дуете зачем вам "эти ваши программистские блокноты" и "какой-то там Vim"? Тогда присаживайтесь поудобнее и налейте себе лимонад, сейчас я вам всё по полочкам разложу.


Читать дальше →
Всего голосов 54: ↑50 и ↓4+46
Комментарии252

Переезд программиста в Эстонию: работа, деньги и стоимость жизни

Время на прочтение4 мин
Количество просмотров30K


На Хабре довольно популярны статьи о переезде в разные страны. Я собрал информацию о переезде в столицу Эстонии – Таллин. Сегодня поговорим о том, легко ли разработчику найти вакансии с возможностью релокации, сколько можно заработать и чего вообще ожидать от жизни на севере Европы.
Читать дальше →
Всего голосов 33: ↑25 и ↓8+17
Комментарии46

Информация

В рейтинге
Не участвует
Откуда
Харьков, Харьковская обл., Украина
Зарегистрирован
Активность