Pull to refresh
153
0
Павел Остапенко @mt_

User

Send message

О здоровой рефлексии и честности

Reading time2 min
Views8.3K
Пишу эту короткую заметку, потому что не могу не написать. Гендиректор free-lance.ru заявил недавно, что целью запрета на передачу контактов является, ни больше ни меньше, создание «другого (не такого как был до 2 октября) рынка Фри-ланса в русскоязычном сегменте интернета». Всё это звучало неоднозначно, но было не до конца понятно — это просто желание заработать, либо люди действительно хотят сделать русский фриланс более взрослым, что ли. Счастливо неведение тех, кто рад обманываться!

Вдумайтесь теперь в смысл последних изменений. Для платных пользователей площадки (довольно сильно платных, кстати) снова возвратили возможность обмениваться контактами. Но позвольте, ещё недавно вы говорили, что невозможность передавать контакты — это безусловное благо! То есть, это возможность стать более солидными и уверенными друг в друге. А что получается? Что сильно платные «братья по разуму» получают возможность стать несолидными и неуверенными? Что это за безусловное благо, за отсутствие которого надо платить?
Читать дальше →

GC в C++: преодоление соблазна

Reading time4 min
Views8.8K
Недавно появилась заметка о простой и эффективной «ручной» сборке мусора в С++. Вполне допускаю, что локальная сборка мусора внутри какого-то сложного класса (где идёт активная низкоуровневая работа с указателями) может быть оправдана. Но в масштабах большой программы, существует более надёжный и простой метод избавления от утечек памяти. Не претендуя на «метод на все случаи жизни», очень надеюсь, что он сделает проще жизнь хотя бы некоторым из читателей.

Суть метода предельно проста: если каждый объект является переменной какой-либо области видимости или простым («стековым») членом другого объекта, то даже при аварийном закрытии программы от необработанного исключения, всегда будет происходить корректная очистка. Задача заключается в том, чтобы свести всё многообразие динамических сценариев к этой схеме.
Вот отсюда поподробнее...

Каспийские монстры многопоточности

Reading time5 min
Views7.4K


Мне очень хочется показать, что в многопоточности С++ «очень быстро» не исключает «очень безопасно». А значит можно писать эффективные и стабильные программы со сколь угодно большим количеством потоков и при этом избегать траты кучи времени на отладку многопоточности. Если Вам интересно, как мне удаётся не выстрелить себе в ногу, и чем я за это плачу, добро пожаловать
под кат

Ещё один взгляд на транспорт

Reading time3 min
Views2.1K
Недавно была затронута тема проектирования дорожной инфраструктуры. Я бы хотел мельком заглянуть в будущее и осветить эту проблему немного иначе.

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

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

Задача одновременного перемещения масс людей — есть задача вычислительная, задача оптимизации, которой должен заниматься не человек, а компьютер.
Как именно?

10 лет практики. Часть 2: ресурсы

Reading time4 min
Views3.5K
Здравствуйте. Я планировал написать большую статью об управлении ресурсами в С++.
Но на практике, тема эта такая сложная и многогранная, что я хочу остановиться на определённой методике, которой пользуюсь сам. Данная методика не является спасением на все случаи жизни, но экономит много времени и нервов при работе с объектами. При этом, не является широко известной.
Читать дальше →

10 лет практики. Часть 1: построение программы

Reading time6 min
Views22K
Десять лет я пишу на С++. Первые пять лет моей задачей было писать эффективный код для компьютерных игр, потом основным требованием была стабильность, так как речь шла об автоматизации промышленных объектов. Я бы хотел поделиться своим личным опытом и практическими наработками, которые помогут создавать эффективные и в то же время стабильно работающие программы.
image

Материал разбит на части, от самых общих практических правил, интересных начинающим, до конкретных вопросов, актуальных опытным программистам.
В первой части я на практике дам свой ответ на самые базовые вопросы. Как вообще писать программу, в особенности — сложную программу? Что следует сделать в самом начале, чтобы потом не переделывать с нуля? Как создать оптимальную структуру программы?
Читать дальше →

Вопрос по Avangate

Reading time1 min
Views514
Сегодня от одного из американских клиентов мне пришло письмо следующего содержания:
I purchased your software with our AMEX business credit card. I just went to make another purchase online and the transaction was denied. I called AMEX and they were about to call me, they locked the account due to the payment to you, seems Avangate has a bad reputation. I told them that your transaction was valid and they unlocked my account. You might want to consider a different card processor...
Вопрос к остальным шароварщикам: у Авангейта действительно дурная репутация в Америке, или такая блокировка — единичный случай?

Новая клавиатура Гугла: epic fail или шутка?

Reading time1 min
Views12K
Мне действительно интересно, чем руководствовался Гугл, делая в поисковике вот такую клавиатуру для российского пользователя:
google russian virtual keyboard
(символы по нажатию Alt+Ctrl)
Это такой жёсткий стёб?

И ещё.
1) Почему виртуальная клавиатура не умеет набирать английские символы?
1) Почему вне зависимости от национального домена (.ru, .jp,..) можно набирать только «родные» символы? Искать на других языках (что, по идее, и должна делать эта клавиатура), она не позволяет. А символы, соответствующие моей локали, и так есть на моей «железной» клавиатуре.
2) Зачем поисковику, который не учитывает регистр символов, виртуальные кнопки смены регистра (Caps/Shift)?

Надеюсь, эти вопросы не риторические.

Внимание: теперь в дискуссии участвует разработчик клавиатуры.
Читать дальше →

Эффективность C++ на современных ПК

Reading time2 min
Views3.8K
В виду ограничения на размер, публикую заметку в виде статьи, а не как ссылку с аннотацией.

Со времён, когда проектировался С++, относительная (к скорости оперативной памяти) скорость процессора выросла в 400 раз. Плюс к тому, у процессора появились большие кэши и предсказание ветвлений в коде. Всё это вместе самым серьёзным образом сказывается на эффективности С++ на современных платформах. Ниже даю аннотацию и пару ссылок, где предлагается использовать эти факты для повышения эффективности кода.
Читать дальше →

Firefox от «Сухого»

Reading time1 min
Views746
image

На фоне большой хабрашумихи об iPad, новость о новом военном истребителе российских ВВС, прошла незаметно для Хабра (всего один топик с видеовставками популярных репортажей). Тем не менее, этого полёта ожидали около двадцати лет, и вот он состоялся.
Под катом несколько интересных фактов

Мой защищённый контейнер

Reading time3 min
Views3K
При разработке проекта на C++ возникла необходимость создать защищённый контейнер. Вернее, кросс-платформенные на уровне исходного кода классы, поддерживающие защищённое хранение информации от нескольких байт до гигабайтов, что делает необходимым поддержку потокового шифрования/дешифрования.
Не имея альтернативы нанять на данном этапе профессионального криптографа, приступил к созданию велосипеда.
Данная статья написана для открытого обсуждения предлагаемых решений людьми, близкими к криптографии, а также для тех, кто будет проходить этот путь с нуля, как экономия их времени и сил.
Читать дальше →

Коротко о графиках

Reading time1 min
Views464
Хочу сказать пару слов о графиках, приводимых в заметках на Хабре и других сайтах.
Уважаемые авторы, пожалуйста, помните, что график — это наглядное отображение некоторого эскперимента. А значит, из него должно чётко следовать две вещи:
1) Что за эксперимент. Если вы хотите быть понятыми, приводите необходимые подробности о самом эксперименте, ровно столько, сколько необходимо для его более или менее точного повторения.
2) Какие конкретно данные получились: оси должны быть обозначены, а положение точек (элементов) должно наглядно отражать числовые (или хотя бы качественные) значения.
Эти небольшие, но очень важные детали выгодно отличат заметку профессионала от колонки в «Экстра-НЛО». Это, если хотите, уважение к вашим коллегам, стремление не только опубликовать новые данные, но и нести за них ответственность.

Пара мыслей о USB-флэшках

Reading time3 min
Views6.3K
usb флэшка
Несколько лет назад многие из нас очень плотно «пересели» на USB-флэшки. Наконец-то появилась возможность на одном маленьком брелке таскать почтовую программу со всей перепиской, компиляторы и сами рабочие проекты, фильмы — да всё что угодно. Что говорить, сплошные плюсы.

Тем не менее, за несколько лет ежедневной работы с флэш-брелоками, я обнаружил пару недостатков, которые считаю достаточно серьёзными. Далее я уточню что имею в виду и предложу свои мысли по решению этих проблем. Если хотите, это обсуждение как сделать флэшку с интересными конкурентными преимуществами.
Читать дальше →

Вебдванольные сайты и рейтинги на них. Попытка переосмысления

Reading time3 min
Views749
Всегда считал себя ретроградом. Не успеваешь продифференцировать рост свечек на торте, а мониторы из чёрно-зелёных стали цветными, затем цветными и плоскими, килобайты сменились теми же числами в мегабайтах, гигабайтах, терабайтах… Где-то вдалеке крах доткомов, и вот уже начали желтеть семейные фотографии первых вебдванольных сайтов. Молодой стандарт вебдванольности, не успев вырасти и остепениться, был признан классикой, незаметно переходя в категорию устаревающего ретро. Самое время остановиться и полистать фотоальбом, вернее, ту его часть, где фигурируют рейтинги.
Читать дальше →

Улучшить дизайн ICQ?

Reading time2 min
Views555
В одном из недавних обсуждений мне попался комментарий Yolenzo, где он предложил свои улучшения дизайна ICQ.
Мне эти улучшения понравились, и я попытался ещё доработать эти изменения. Комментарий был заминусован, и минусующие, к сожалению, не написали причины. А ведь тема очень интересная. Не обязательно я прав, не обязательно прав автор комментария. В любом случае, хотелось бы узнать вариант, наиболее удобный пользователю.
Читать дальше →

Остался вопрос про рунет и стартапы

Reading time2 min
Views365
Сегодня на хабре в очередной раз была поднята важная для меня тема. Тема стартапов в рунете.
Личные наблюдения (в том числе и «шкурные», как разработчика стартапа), подтверждают общий посыл статьи. Даже запустив более или менее нужный людям сервис, как если бы делал его для себя (а он именно так и начинался), получить с него деньги довольно трудно. Что перманентно оставляет его в классе «хобби» и не даёт возможности заниматься им серьёзно.

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

Но постойте.
Программистская школа у нас сильнее чем в Америке*. И дешевле в найме. => Исполнители есть.
Остаётся идея. Неужели в стране, известной своими изобретателями и идеями, вдруг исчезли все светлые головы? Не очень похоже на правду.

Почему тогда получается, что у нас нет достойных стартапов?
«Достойный» стартап — это стартап, который на качественном уровне (т.е. в потенциале) способен завоевать заметную часть большого Интернета при соответствующем финансировании, скажем, российскими инвесторами.
Первый ответ, который приходит в голову, звучит так: «может дело в том, что имеющие „идею на миллион“, понимают, что миллион этот здесь точно не заработать, продают идеи за рубеж, либо уезжают сами?». Какая-то причина должна быть обязательно.

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

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

Сайт: анализ предпочтений посетителя

Reading time1 min
Views634
Моя идея не является новой в глобальном смысле этого слова. Она также не является универсальной или законченной. Но, как мне кажется, в некоторых случаях и на некоторых типах сайтов, она может быть очень кстати.

Есть некоторые виды сайтов, где на одной странице располагается содержимое, более или менее отличное по тематике (блоги, объявления). Определять предпочтения посетителя сайта можно при помощи несложного клиентского скрипта. Для этого страничный скрипт может анализировать:
  • моменты «остановки» пользователя на чтение тех или иных частей страницы (скролирование — останов — скролирование)
  • в моменты «останова» — анализ положений мыши (курсор зачастую находится внутри или рядом с объектом интереса). Учитывать этот фактор следует с набором оговорок, а также меньшей степенью доверия.
Введение последовательного уточнения и эвристики, как мне представляется, позволит в кратчайший срок выявлять предпочтения пользователя и динамически предоставлять ему целевые элементы страницы, подгружая их через AJAX (отправили URL, контекст и положение скроллера — получили набор элементов). Это могут быть как более подходящие заметки/постинги/объявления, ссылки на контекстные внутренние страницы, так и реклама, либо просто полезные ссылки.

Новый подход к авторизации и капче

Reading time2 min
Views1K
Однажды, блуждая по просторам Интернета в поисках нужной статьи, я встретил короткое замечание некоего Ingvald Straume о том, что пароль в программах можно бы было заменить на ручное рисование подписи мышкой.
Действительно, ведь пароль — это такая штука, которую можно забыть. А вот подпись (или некая задуманная закорючка) — это вещь, которую в силу человеческого образного восприятия, забыть гораздо сложнее.
Дальше я экономлю Ваше время, предлагая плюсы и минусы идеи...

Индикаторы активности устарели?

Reading time1 min
Views1.1K
Как все мы помним, ещё с самого первого момента появления PC-совместимых ПК в нашей стране, на них, как правило, горело два или три светодиода. Питание, Винчестер и иногда Турбо (режим полной или половинной частоты). Это было вполне понятно и логично. Постепенно режим Турбо исчез, и с тех пор стандартом де-факто стали корпуса с двумя светодиодами: Питание и Винчестер.

С тех пор уже прошло… нет, не много лет. Прошло несколько эпох, если считать мерками IT. Достаточны ли эти индикаторы сейчас, даже для обычного пользователя? В эпоху Интернет, считаю, очень важным индикатором является сетевая активность. Сейчас использование сети зачастую ничуть не менее важно чем использование винчестера.
Конечно, в ОС обычно есть иконки сетевой активности, висящие в тулбарах. Не лучше ли вывести эти индикаторы сразу на корпус, в «железном» исполнении?

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

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Registered
Activity

Specialization

Chief Technology Officer (CTO)
Optimization of business processes
Development management
Mentoring
FullStack
Agile