Pull to refresh
0
0
Send message

Прокрастинация. Символическая система вознаграждения. Часть 1

Reading time7 min
Views154K
Что такое прокрастинация? Это термин в психологии, который подразумевает склонность к постоянному откладыванию дел или мыслей. Прокрастинация не является ленью, лень это отсутствие или недостаток трудолюбия. В чём проявляется прокрастинация? В том, что человек осознаёт выполнение важных дел, но откладывает их на потом или заменяет дела развлечениями. Когда сроки подходят, он либо бросает всё, либо пытается выполнить работу за короткий промежуток времени, с предсказуемым результатом.

Для тех кто хочет преодолеть прокрастинацию быстро, просто прочитав эту статью
Подробности под катом
Total votes 60: ↑55 and ↓5+50
Comments54

Прекратите скручивать — 2. О способах крепления кабеля

Reading time7 min
Views559K
По заявкам слушателей, так сказать. Правильно соединить кабель — половина дела, но если он будет свободно болтаться, то долго он не проживет — или заденут, или порвут, или откусят(необязательно со злыми намерениями). А может просто под своим весом выскользнуть из соединения. А может не выскользнуть, что еще хуже — поди-ка найди место пропадания контакта. Так что эта статья расскажет о том, какими способами можно закрепить кабель так, чтоб он никуда не делся.
Да и вот такие крепления некрасивы, неудобны, и выдают непрофессионала:

Читать дальше →
Total votes 313: ↑304 and ↓9+295
Comments161

Прецизионный поворот растрового изображения на произвольный угол

Reading time8 min
Views57K
Поворот растрового изображения на углы, кратные 90°, относительно геометрического центра изображения – задача тривиальная и решается без потери качества простым преобразованием координат каждого пикселя.

Для поворота растрового изображения на произвольный угол разработаны быстрые но не оптимальные алгоритмы, дающие приемлемую для практических целей аппроксимацию с потерей качества (например, этот).
Довольно давно, из чисто спортивного интереса, меня заинтересовала задача максимально точного поворота растрового изображения на произвольный угол. К сожалению, мне нигде не удалось найти готовый алгоритм, поэтому пришлось делать его собственноручно. Даже если в итоге я «изобрёл велосипед», результат, как мне кажется, получился достаточно интересным, чтобы им можно было поделиться.

Ниже мы рассмотрим алгоритм прецизионного поворота растрового изображения на произвольный угол относительно произвольного центра с минимальными потерями.

Выражаю благодарность Харченко Владиславу Владимировичу за оказанную помощь.
Читать дальше →
Total votes 114: ↑104 and ↓10+94
Comments40

Красивые disabled иконки «малой кровью»

Reading time4 min
Views13K
Delphi давно славится тем, что disabled иконки по умолчанию выглядят как-то так:



А хотелось бы, чтоб они выглядели вот как-то так:



Воспользуемся тем, что Delphi позволяет заменить disabled иконки своими, указав дополнительный список изображений. Но рисовать и подключать такие иконки каждый раз занятие утомительное. Поэтому мы создадим этот список изображений динамически, во время выполнения программы.

Создавать такой список изображений мы будем в специальной функции CreateSpecialImageList(). В качестве аргумента нам понадобится список с оригинальными иконками, а в качестве возвращаемого значения уже будет нужный нам TImageList. Тогда подключить наши новые иконки мы сможем при создании формы следующей строчкой кода:

ActionManager.DisabledImages := CreateSpecialImageList(ImageList);

Но я думаю, мы должны пойти глубже...
Total votes 49: ↑37 and ↓12+25
Comments5

О технологиях показа кино в 3D

Reading time7 min
Views151K

3D кинотеатры за последнее время расплодились в больших количествах. Не сильно в последнее время от них отстают в распространённости и 3d-телевизоры. Однако, что именно стоит за маркетинговым “3D” в каждом случае не всегда ясно и очевидно.
Стоит отметить, что правильнее было бы назвать это “стерео”-кино, но термин “стерео” уже давно и прочно (просто, видимо, по праву первенства) закрепился за звуком (в этом плане показательно, например, название журнала “Стерео и видео”). Поэтому маркетологам пришлось использовать термин “3D”, который ассоциируется с объёмным изображением в том или ином смысле. В данном случае понимается восприятие мозгом объёма за счёт подачи каждому из глаз изображения, чуть отличающегося от изображения для другого глаза, аналогично тому, как отличаются получаемые глазами изображения в жизни.
Читать дальше →
Total votes 101: ↑93 and ↓8+85
Comments167

Обустраиваем рабочее место программиста в деревне

Reading time12 min
Views172K
В последнее время на Хабре участились публикации на тему переездов программистов в самые разные места — от Силиконовой долины до российской глубинки.
Я в свое время сделал выбор — деревня недалеко от города, и в моей жизни и профессиональной деятельности выпало дважды инсталлировать рабочее место программиста в деревнях, инсталлировать полностью, включая создание нормальных условий для жизни.

Если интересны подробности: электрика/Интернет/отопление/водоснабжение с нуля — прошу под кат (сори, много фоток).
Читать дальше →
Total votes 342: ↑325 and ↓17+308
Comments201

Пишем свой отладчик под Windows [часть 1]

Reading time12 min
Views47K

Вступление



Все мы, время от времени, используем дебаггер для отладки программ. Отладчик может использоваться с C++, C#, Java и ещё сотней других языков. Он может быть как внешним (WinDbg), так и встроенным в среду разработки (Visual Studio). Но вы хоть раз задавались вопросом, как же работает отладчик?
И вам повезло. В этом цикле статей мы разберёмся от и до, как же работает отладка изнутри. В этой статье рассматривается только написание отладчика под Windows. Без компиляторов, линковщиков и других сложных систем. Таким образом, мы сможем отлаживать только исполняемые файлы, так как мы напишем внешний отладчик. Эта статья потребует от читателя понимание основ многопоточности.
Читать дальше →
Total votes 87: ↑82 and ↓5+77
Comments10

Multiseat для Windows рабочих мест

Reading time10 min
Views47K

Хочу вам рассказать о необычном способе создания многопользовательской рабочей станции, в качестве основы которого лежит VMPlayer.

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

Для того чтобы решение стало достойным применения, ему были предъявлены следующие требования:
  • В качестве операционной системы для конечных пользователей должна остаться Windows.
  • Стоимость системного блока для двух сотрудников, в идеале должна быть сравнима со стоимостью одного типового, из приобретаемых на тот момент.
  • Работа пользователей не должна сколько-нибудь заметно замедлится или быть некомфортной, от того, что используется один компьютер.

Ну собственно, бизнес-требования ясны, значит пора переходить к решению…
Читать дальше →
Total votes 52: ↑45 and ↓7+38
Comments39

Основы IPv6

Reading time11 min
Views127K

Предисловие


Пост является кратким конспектом Wiki, TechNet'а, FreeBSD'шного handbook'a, Serverfault'a, множества RFC и документов IANA, а также курсов от Специалист.Ру для сотрудников Яндекса.

Пост можно рассматривать как копилку ссылок по актуальной на 2012 год спецификации IPv6. Однако он никак не описывает возможные способы установки IPv6 соединения с интернетом и не привязан к какой-либо определённой ОС.
Учтите, что прочтение данной хабрастатьи займёт у вас не более получаса, однако крайне рекомендуется ознакомиться со всеми приведёнными в статье ссылками… Последнее может занять несколько недель.
Читать дальше →
Total votes 70: ↑68 and ↓2+66
Comments56

IPv6: Есть ли повод для беспокойства?

Reading time9 min
Views3K
Через некоторое время после того, как у меня появился мой первый модем, мне говорили, что Интернет-протокол скоро будет заменен на новый и гораздо более лучший. Человек, объясняющий это, в действительности не знал, чем же он будет лучше, но был уверен, что он будет отличным и он станет повсеместно используемым в ближайшее время. Почти два десятилетия спустя, мы все еще, в основном, используем IPv4 — все тот же протокол, который я использовал на моем первом модеме.

Читать дальше →
Total votes 89: ↑78 and ↓11+67
Comments135

Мысли вслух про IPv6, или почему нас не спасет NAT

Reading time4 min
Views24K
Когда я читаю новости про IPv6 у меня складывается впечатление, что все сводится к выводам:
  1. Единственный плюс IPv6 — практически безграничное адресное пространство;
  2. IP-адресов мало, но, так как большинству белый адрес не нужен, нас спасет NAT;
  3. Если «отжать» IP-адреса у компаний, получивших большие пулы на заре интернета, то хватит еще на несколько лет.

При этом забывается масса важных деталей, которые сильно портят картину.
Читать дальше →
Total votes 122: ↑106 and ↓16+90
Comments145

Как определить все мониторы и их разрешения

Reading time1 min
Views26K
image
Недавно возился с нормальной инициализацией окна, и стояла задача задетектить все мониторы и их разрешения. Оставлю тут решение для потомков.
Читать дальше →
Total votes 51: ↑37 and ↓14+23
Comments23

Три подхода к методологии построения сложного клиентского приложения

Reading time6 min
Views10K
Наверно, не существует единого рецепта, который бы всех устроил. Это касается любой проблемы. Для разработчиков этот тезис самоочевиден, и вовлеченность в использование и проектирование отдельных инструментов определяется, главным образом, лишь профессионализмом. Изобретение велосипедов романтично и неизбежно.

Особо вероятно изобретение велосипеда, когда рост сложности приложения происходит постепенно и в некотором смысле незаметно. Сложное приложение обычно является богатым приложением (rich), его элементы и особенности специфицированы W3C www.w3.org/TR/backplane. Известный JavaScript-евангелист Addy Osmani так дополнительно определяет сложное приложение: “По-моему, крупное JavaScript приложение есть нетривиальное приложение, требующее значительных усилий разработчика для поддержки, причем наиболее сложное оперирование обработкой и отображением данных ложится на браузер” (http://addyosmani.com/largescalejavascript/).
Читать дальше →
Total votes 40: ↑34 and ↓6+28
Comments27

Шпаргалка по MV-паттернам для проектирования веб-приложений

Reading time7 min
Views68K
mv-patterns
В Интернет можно найти множество различающихся реализаций и схем, уже набившего оскомину, паттерна MVC. В разных книгах я также встречал разные схемы. Это порождает некоторую путаницу и комментарии к моей предыдущей статье: "Реализация MVC паттерна на примере создания сайта-визитки на PHP" тому подтверждение. В поисках истины, я попытался расставить все по местам… перечитал некоторую литературу и статьи по паттернам проектирования и написал дополнение к упомянутой статье. Но решил запостить это дополнение, как отдельный топик в надежде на фидбэк. Под катом вы найдете несколько часто встречающихся схем MVC и MVP с описанием жизненного цикла приложения, а также описание менее популярных паттернов HMVC и MVVM. Разумеется, некоторые из перечисленных паттернов применимы не только к веб-приложениям, но в статье они рассматриваются именно в этом контексте.
Читать дальше →
Total votes 69: ↑66 and ↓3+63
Comments22

Реализация MVC паттерна на примере создания сайта-визитки на PHP

Reading time16 min
Views722K
mvc

Как вы уже догадались из названия статьи, сегодня речь пойдет о самом популярном, разве что после Singleton, шаблоне проектирования MVC, хотя такое сравнение не совсем уместно. Понимание концепции MVC может помочь вам в рефакторинге и разрешении неприятных ситуаций в которые, возможно попал ваш проект. Дабы восполнить пробел, мы реализуем шаблон MVC на примере простого сайта-визитки.

Читать дальше →
Total votes 80: ↑46 and ↓34+12
Comments175

Безопасность OAuth2

Reading time5 min
Views117K
Данная блогозапись на хабр прежде всего обусловлена появлением «Ключницы» — хороший повод связать и перевести накопленное.


У нас в программе: вольный пересказ спек OAuth2, слабые стороны и Threat Model, 0day на хабретрюк с аутенфикацией.
image
Читать дальше →
Total votes 168: ↑160 and ↓8+152
Comments65

Расставляем точки на Li: Нужна ли тренировка литиевых аккумуляторов?

Reading time7 min
Views757K
Прошло уже достаточно времени с тех времен, когда Ni-Cd и Ni-Mh аккумуляторы безраздельно властвовали в мобильных устройствах, но с самого начала эпохи Li-ion и Li-pol все не утихают споры по поводу того, надо ли «тренировать» эти аккумуляторы сразу после покупки.
Доходит до смешного, в теме обсуждения ZP100 на china-iphone всем новичкам рекомендовали в приказном тоне пройти 10 циклов зарядки-разряда, а только потом приходить с вопросами о аккумуляторах.



Давайте попробуем разобраться, имеет ли такая рекомендация право на жизнь, или это рефлексы спинного мозга (за отсутствием головного, наверное) некоторых индивидуумов, у которых они остались со времен никелевых батарей.
Читать дальше →
Total votes 328: ↑306 and ↓22+284
Comments194

Как распознать кракозябры?

Reading time1 min
Views427K
В комментариях к предыдущему посту про иероглифы сказали, что хорошо бы иметь такую же блок-схему для кракозябр.

Итак, вуаля!


За источник информации была взята статья из вики. В блок-схеме «UTF-16 → CP 866» означает, что исходная кодировка была «UTF-16», а распозналась она как «CP 866».

Как всегда — кликабельно. Исходник в .docx: здесь.
Total votes 429: ↑418 and ↓11+407
Comments64

Драйвер — это просто

Reading time7 min
Views100K
Многие считают что самому создать драйвер для Windows это что-то на грани фантастики. Но на самом деле это не так. Конечно, разработка драйвера для какого-то навороченного девайса бывает не простой задачей. Но ведь тоже самое можно сказать про создание сложных программ или игр. В разработке простого драйвера нет ничего сложного и я попытаюсь на примерах это показать.
Читать дальше →
Total votes 77: ↑53 and ↓24+29
Comments60

Information

Rating
Does not participate
Registered
Activity