Pull to refresh
554
Филипп Володин@Fil

Пользователь

184
Subscribers
Send message

PDF с точки зрения программиста

Reading time8 min
Reach and readers88K
Я имею дело с PDF не только как пользователь, а, прежде всего, как разработчик софта, умеющего его читать и писать (возможно, вы сталкивались с продуктами компании ABBYY, работающими с PDF – ABBYY FineReader, ABBYY PDF Transformer). Я предполагаю, что вы прочитали статью habrahabr.ru/company/abbyy/blog/105006 и далее пишу только про некоторые особенности и ограничения PDF, которые больше интересны продвинутым пользователям. Никаких сложных технических деталей при этом не буду касаться, так что программистам, желающим научиться читать или писать PDF, лучше сразу перейти к чтению спецификацию версии 1.7 со страницы www.adobe.com/devnet/pdf/pdf_reference_archive.html :)
Читать дальше →

Программист, который отвлекается

Reading time5 min
Reach and readers14K
Автор статьи — программист с шестнадцатилетним стажем работы — был поставлен перед невозможностью подолгу сидеть за компьютером (как поступают многие из нас). В этой статье он рассказывает о том, как организовать свою рабочий процесс так, чтобы частые перерывы не вредили возможности сосредоточиться на работе и эффективности труда. В принципе достаточно известные вещи, но лично для меня стали новостью инвертирование приоритетов и сам факт того, что можно работать отвлекаясь и при этом не терять ход мысли.

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

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

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

А как сделать X на языке Y?

Reading time1 min
Reach and readers685
Часто, когда требуется решить какую-то задачу на новом или старом и позабытом языке возникают довольно простые вопросы, например у меня сегодня возник вопрос как сделать проверку на null (nil, none, nothing, empty) в Tcl.

RosettaCode — хрестоматия программирования, содержит решения типовых задач на разных языках, вот например решение моей.

Просмотреть решения можно по задачам, языкам, библиотекам.

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

Внутри MP3. А как оно всё устроено?

Reading time5 min
Reach and readers120K


Однажды мне понадобилось решить простенькую (как мне тогда казалось) задачу – в PHP-скрипте узнать длительность mp3-файла. Я слышал о ID3 тегах и сразу подумал, что информация о длительности хранится либо в тегах, либо в заголовках mp3-файла. Поверхностные поиски в интернете показали что за пару-тройку минут решить эту задачу не получится. Поскольку от природы я довольно любопытен а время не поджимало — решил не использовать сторонние инструменты а разобраться в одном из самых популярных форматов самостоятельно.

Если Вам интересно, что там внутри – добро пожаловать под кат (трафик).
Читать дальше →

getColor.ru — online color picker, позволяющий обмениваться цветами

Reading time2 min
Reach and readers4.9K
image
Наверное не ошибусь, если скажу, что большинство полезных решений появляется только благодаря возникновению каких-либо трудностей. О паре таких трудностей и одном замечательном сервисе, который может избавить вас от них, прямо сейчас.

Color picker


Многим должна быть до боли знакома ситуация, когда внезапно требуется HEX-цвет на полтона темнее или, скажем, бирюзовее, чем есть сейчас.
Если вы до сих пор не умеете представлять точный RGB-цвет в голове — вам не обойтись без color picker’а, который сделает эту работу за вас.

Лично я знаю только три вменяемых варианта, где можно взять color picker:
  1. Отдельная программа, специально предназначенная для этого;
  2. Практически любой графический редактор;
  3. Online-сервис

Надеюсь, утверждение, что онлайн-сервис является самым простым решением, не вызовет ни у кого сомнений — количество символов в каждом пункте тому свидетель.
Читать дальше →

Иследование несложных crackme's (часть 3)

Reading time7 min
Reach and readers13K
Здравствуйте, Хабралюди.
Представляю вам третью часть из моего цикла статей о исследовании крякмисов. В этом топике мы поговорим с вами о ручной распаковке некоторых пакеров и о преодолении не сложных антиотладочных методов.
Читать дальше →

Пишем свою ОС: Выпуск 1

Reading time6 min
Reach and readers294K
Данный цикл статей посвящён низкоуровневому программированию, то есть архитектуре компьютера, устройству операционных систем, программированию на языке ассемблера и смежным областям. Пока что написанием занимаются два хабраюзера — iley и pehat. Для многих старшеклассников, студентов, да и профессиональных программистов эти темы оказываются весьма сложными при обучении. Существует много литературы и курсов, посвящённых низкоуровневому программированию, но по ним сложно составить полную и всеохватывающую картину. Сложно, прочитав одну-две книги по ассемблеру и операционным системам, хотя бы в общих чертах представить, как же на самом деле работает эта сложная система из железа, кремния и множества программ — компьютер.

Каждый решает проблему обучения по-своему. Кто-то читает много литературы, кто-то старается поскорее перейти к практике и разбираться по ходу дела, кто-то пытается объяснять друзьям всё, что сам изучает. А мы решили совместить эти подходы. Итак, в этом курсе статей мы будем шаг за шагом демонстрировать, как пишется простая операционная система. Статьи будут носить обзорный характер, то есть в них не будет исчерпывающих теоретических сведений, однако мы будем всегда стараться предоставить ссылки на хорошие теоретические материалы и ответить на все возникающие вопросы. Чёткого плана у нас нет, так что многие важные решения будут приниматься по ходу дела, с учётом ваших отзывов.
Читать дальше →

5 способов, которыми игры пытаются вызвать зависимость

Reading time10 min
Reach and readers192K
Итак, в новостях снова пишут, что кто-то еще умер из-за игромании. Да, опять Корея.

Какого ...? послушайте, я не пытаюсь доказать что видео игры — это героин. Я полностью понимаю, что в данном случае у жертвы было много проблем в жизни. Но, половина из вас знает что World of Warcraft затягивает и что доктора считают игровую зависимость серьёзной проблемой. А вопрос вот в чем: может быть какие-то игры намеренно разрабатывались, чтобы заставлять вас играть в них, даже если вы не получаете от этого удовольствия?
Давайте посмотрим как это работает

Для тех, кому в IT-стартапе требуется разбор Си++-кода

Reading time17 min
Reach and readers17K
Статья описывает открытую и бесплатную библиотеку VivaCore, позволяющую разбирать и анализировать код на языке Си/Си++. Библиотека может быть полезна разработчикам, начинающим свои стартапы в области создания таких инструментов как построение документации по коду, специфические расширения языка, подсчет метрик и так далее.
Читать дальше →

Разработка Ленты, борьба с Ощущением раздутости («Почему» Интерфейса, часть 3)

Reading time5 min
Reach and readers3.1K
Было:
image

Стало:
image
От себя: лента, лента, лента, лента. Она великолепна.

Автор — Дженсен Харис, Director of Program Management for the Microsoft Windows User Experience Team. (Подскажите адекватный перевод.)

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

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

«Завтра я перестану откладывать дела на завтра»

Reading time4 min
Reach and readers8.8K
Промедление — это то, чем мы занимаемся каждый день:
  1. «Мне завтра нужно сдать курсовую, которую я еще не начинал, но, чтобы сконцентрироваться, мне сейчас надо отдохнуть и попить кофе»
  2. «Я хочу начать бегать по утрам, но сначала мне нужно сдать сессию и найти хорошую работу, которая обеспечит мне стабильность и уверенность»
  3. «Перед тем, как начать работать, мне нужно ответить на 11 писем и поговорить с друзьями по аське о летней поездке в Испанию, чтобы не отвлекаться в течение дня»

Читать полностью

8 правил инноваций от Тайлера

Reading time3 min
Reach and readers45K
Тайлер ДёрденВсем нам хотелось бы совершать значительные поступки и прожить выдающуюся жизнь.
Никто не хочет целыми днями производить приевшиеся товары в бесцельной гонке за несуществующего потребителя. Ну и уж само собой, что вы лично этого не хотите, не так ли?
Так почему же нам кажется, что сломать рутину и начать заниматься чем-то принципиально новым, так сложно? Потому что это действительно сложно: от нас требуется сменить приоритеты, поменять свои планы и разрушить комфортную жизнь. Это почти то же самое, что стать другим человеком.

«Бойцовский клуб» — фильм о том, как прожить ту жизнь, которую хочешь, и какой тернистый путь нужно пройти, чтобы это стало возможным. Тайлер помогает безымянному герою фильма встать на путь просветления. Возможно, слова Тайлера смогут помочь и кому-то из нас.
Читать дальше →

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

Reading time15 min
Reach and readers16K
С того момента как я начал программировать я наблюдал и думал об одном особом явлении — как большинство программистов активно избегают всего, что касается дизайна интерфейсов и вопросов юзабилити.


Я понимаю, откуда это пришло. Большинство программистов любят программировать. Они готовы учиться новым особенностям языков программирования, пробуют новые компоненты и библиотеки, улучшают свои алгоритмы и архитектуру кода или скажем оптимизируют структуру используемых данных. Это кажется очень важным, потому что, программа хороша настолько, насколько хороши её коды и алгоритмы и насколько все это оптимизировано. И это так. Но только если программы пишутся для программистов.

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

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

Что почитать по веб-разработке

Reading time3 min
Reach and readers238K
Топик Много книг, хороших и разных навёл на мысль сделать похожий каталог наиболее удачных и интересных книг по веб разработке.

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

update: Теперь есть электронные версии книг!

Начнём…
Читать дальше →

Выбор профессии: Учёный или Программист

Reading time3 min
Reach and readers20K
image
Всем огромное спасибо за советы! Вы все мне очень сильно помогли!

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

В чём собственно суть вопроса?
Читать дальше →

Как искать правильно?

Reading time4 min
Reach and readers11K
Предварительный дисклеймер. Возможно, ниже описан изобретенный велосипед и все всё давно уже знают. И не надо тут мудрствовать лукаво. Но ничего вменяемого на эту тему я не читал, поэтому начал думать.

В рамках своего нового курса обучаю людей поиску в Сети. На первых порах большое подспорье оказал печищевский курс (низкий поклон автору) для объяснения принципов работы ПС. Рассказывал о структуре ПС, о запросах и ключевых словах, разных сервисах Яндекса и Гугла, их расширенный поиск и поисковые операторы, про Нигму и Квинтуру. Но это теория. А потом встал вопрос: как научить людей искать в Инете практически?

Напоминаю ситуацию. Есть педколлектив школы, обучающийся Интернету — люди очень разные (по возрасту, воззрениям, опыту и отношению к И-нету). Нужно все четко, последовательно и понятно. Сказать им «через год научитесь» — не пойдет, нужно понятное обучение, т.к. самой аудитории понятие методики не чуждо:-))

Ответ «это приходит с опытом» не подходит, так как неотрефлексированное знание есть магия, а не наука. Ответ «формулируйте правильно запрос» прекрасен, но тоже из области шаманства, потому как объяснить, что такое «правильно», невозможно. Отсюда родилась идея — попытаться сформулировать некоторые принципы («правилами» назвать было бы слишком самонадеянно), отталкиваясь от которых искать в Сети стало бы легче. Сформулировал. Даже на основе этих правил сделал «Поисковые игры» (тренинг по поиску) и через формы в Google Docs отправил людям.

что придумалось...

Точное время: измеряем, применяем

Reading time12 min
Reach and readers41K
   Цель данной статьи – изложить, полученный в ходе работы над проблемой материал о способах максимально точного измерения времени и использования на практике этих способов, а также рассмотреть варианты управления чем-либо программным с максимально достижимой точностью.

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

   Наша задача – найти лучший метод точного измерения малых временных интервалов (желаемая точность – 10^-6 секунды), определить наиболее эффективный способ программирования задержек в исполнении кода, с такой же точностью.

   Программист, который уже пробовал разрабатывать различные прикладные приложения, например, связанные с передачей данных или с генерацией/анализом сигналов мог заметить, что все стандартные функции (sleep, beep, GetTickCount, таймеры) обладают большой погрешностью при работе с малыми значениями временного интервала.
Читать дальше →

Статический анализ кода C++

Reading time5 min
Reach and readers34K
Для меня красота C++ заключается, в первую очередь, во вседозволенности и ужасающей мощи языка. Мы можем работать с памятью так же плотно, как и в C, и в то же время имеем такие средства абстракции, как шаблоны и STL, где параметризовать можно что угодно и чем угодно.
Плата за это соответствующая — не всегда вразумительные ошибки компилятора (попробуйте забыть поставить точку с запятой после определения класса), очень большой срок подготовки и обучения программистов, но самое главное — некоторые баги становятся заметными только во время исполнения программы.
Мы хотим больше полезных ворнингов до запуска наших программ. Одно из средств получения желаемого — статический анализ кода. Статический — значит, не запуская программу. Интересны не только вероятные ошибки, случаи undefined behaviour, утечки памяти, но и вещи вроде недоступности/неиспользуемости кода, рекомендации по повышению интуитивности стиля программирования.
Читать дальше →

Легальный взлом как разминка для ума

Reading time5 min
Reach and readers15K
IT-шники часто придумывают себе упражнения для ума, пытливый ум постоянно требует разминки. Хочу рассказать об одном из самых жестких и спорных способах – взлом специально защищенных программ-головоломок (Часто их называют crackme).

Одно из мест, где такие головоломки собраны — crackmes.de.

Здесь находятся много интересных программ, на которых можно испробовать свои силы по взлому. Никакого криминала – программы специально написаны для этой цели (так называемые crackme и reverseme);

Часто любят говорить «Все защиты можно взломать». Поковыряв некоторые из crackme вы возможно измените своё мнение.
Читать дальше →

Information

Rating
7,470-th
Location
Казань, Татарстан, Россия
Date of birth
Registered
Activity