Pull to refresh
98
0
Send message

Механические клавиатуры

Reading time 17 min
Views 760K
Все мы давно ждем массового появления всевозможных кибер-перчаток и виртуальной реальности на каждом шагу, но все равно каждый день в офисе и дома нам приходится работать за такой банальной вещью, как обычная клавиатура.

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

Итак, некоторое время назад я озаботился сбором информации о клавиатурах, и даже начал готовить информацию для статьи, но к сожалению (к счастью?) нашлась исчерпывающая статья о всех нюансах сразу, которую я решил перевести.

Механические клавиатуры. Путеводитель.

Читать дальше →
Total votes 323: ↑313 and ↓10 +303
Comments 331

Here be dragons: Управление памятью в Windows как оно есть [2/3]

Reading time 5 min
Views 39K

Каталог:
Один
Два
Три

Оказывается длинные опусы нужно разбивать. А я то думал «многосерийные» топики публикуют исключительно для зарабатывания рейтинга :-)

Продолжу с места в карьер, так как где разбилось — там разбилось, а писать дополнительные введения к каждой серии выше моих сил.
Читать дальше →
Total votes 274: ↑251 and ↓23 +228
Comments 34

Here be dragons: Управление памятью в Windows как оно есть [1/3]

Reading time 8 min
Views 174K

Каталог:
Один
Два
Три

Менеджер памяти (и связанные с ним вопросы контроллера кеша, менеджера ввода/вывода и пр) — одна из вещей, в которой (наряду с медициной и политикой) «разбираются все». Но даже люди «изучившие винду досконально» нет-нет, да и начинают писать чепуху вроде (не говоря уже о другой чепухе, написанной там же):
Грамотная работа с памятью!!! За все время использования у меня своп файл не увеличился ни на Килобайт. По этому Фаерфокс с 10-20 окнами сворачивается / разворачивается в/из трея как пуля. Такого эффекта я на винде добивался с отключенным свопом и с переносом tmp файлов на RAM диск.

Или к примеру μTorrent — у меня нет никаких оснований сомневаться в компетентности его авторов, но вот про работу памяти в Windows они со всей очевидностью знают мало. Не забываем и товарищей, производящих софт для слежения за производительностью и не имеющих ни малейшего понятия об управлении памятью в Windows (и поднявших по этому поводу истерику на пол интернета, на Ars-е даже был разбор полетов). Но самое потрясающее, что я видел всвязи с управлением памятью — это совет переместить pagefile на RAM-диск:
Из моих трех гигабайт под RAM disk был выделен один (на тот момент, когда на лаптопе еще была установлена XP), на котором я создал своп на 768МБ ...

Цель данной статьи — не полное описание работы менеджера памяти (не хватит ни места ни опыта), а попытка пролить хоть немного света на темное царство мифов и суеверий, окружающих вопросы управления памятью в Windows.
Читать дальше →
Total votes 360: ↑338 and ↓22 +316
Comments 85

Пробуем открыть свое дело

Reading time 5 min
Views 3.9K

Пролог


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


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


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


Пробуем открыть свое дело. Часть 2

Много буковок...
Total votes 91: ↑78 and ↓13 +65
Comments 112

Кто убил пролог?

Reading time 7 min
Views 7.2K
Существуют тысячи языков программирования (строго говоря, так утверждают люди, которые их считают). Классификация такого количеств их разновидностей весьма сложна и служит источником споров. Тем не менее, классификация запутанна и зачастую противоречит сама себе. Предлагаю ограничиться четырьмя ветвями на верхнем уровне. Я привязал каждую ветвь к языку, который был первым в своем семействе в хронологическом порядке:
  • императивные (1956, Фортран);
  • функциональные (1959, Лисп);
  • объектно-ориентированные (1972, SmallTalk);
  • логические (1974, Пролог).

В своих рассуждениях я буду отталкиваться от факта, что три семейства из четырех чувствуют себя неплохо, в том смысле, что у них есть множество преемников. По отношению к этим трем Пролог чрезвычайно отстал. Но в начале 1980-ых было по-другому. Тогда Пролог соревновался с Лисп за умы тех, кто занимался не-IBM программированием (назовем это так, чтобы избежать неоднозначного термина ИИ).
Читать дальше →
Total votes 93: ↑85 and ↓8 +77
Comments 106

Схема дизайнерского процесса от Американского института изобразительных искусств (AIGA)

Reading time 2 min
Views 2K
В Американском институте изобразительных искусств (AIGA) составили схему, разъясняющую процесс дизайна. Под дизайном подразумевается самое широкое его понимание, то есть осмысление, придумывание, разработка и внедрение решения конкретной проблемы.



Будучи остряками, создатели схемы вот так иллюстрируют ее применение:



Я попробовал прогнать одну свою насущную проблему по этим пунктам и, надо сказать, нашел решение, которое сработало, и сработало так как было задумано.

Подробности по каждому пункту расписаны в моей записи тут: nordisk.pp.ru/design/58
Там же есть ссылка на исходную брошюру, если вам не понравятся мои переводческие потуги :)

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

Читать дальше →
Total votes 59: ↑53 and ↓6 +47
Comments 22

Here be dragons: Управление памятью в Windows как оно есть [3/3]

Reading time 5 min
Views 147K

Каталог:
Один
Два
Три

μTorrent


Это, пожалуй, самая забавная часть. При очевидно высоких навыках программирования, авторы либо не читали, либо не поняли вот этот документ. Вот что происходит с дефолтными настройками:
Читать дальше →
Total votes 323: ↑300 and ↓23 +277
Comments 171

Ускорение загрузки Windows for fun and profit

Reading time 4 min
Views 802K
image Пожалуй, начну с того, что если перегружаться 15 раз в год, то любой «тюнинг» процесса загрузки отнимает больше времени, чем будет выиграно на перезагрузках за все время жизни системы. Однако, спортивный интерес берет свое, тем более, что люди интересуется процессом оптимизации быстродействия. А загрузка оказалась самым очевидным кандидатом в примеры того, как на мой взгляд должен выглядеть этот самый процесс. Сразу скажу, что грузиться будем с 5400 rpm винта, грузиться будем в «рабочую» систему: помимо недобитой вендорской крапвари там стоит еще куча всякого типа вижуал студии, антивируса, скайпа, стима, гуглапдейтера и пр…

Про то, почему отключение pagefile-а скорее вредно, чем полезно — как нибудь в другой раз, а пока…
Под катом много однообразных картинок и немножко унылого текста
Total votes 532: ↑516 and ↓16 +500
Comments 365

Когда Windows 7 просыпается сам

Reading time 2 min
Views 106K
После установки Windows 7 RTM стал сталкиваться с тем, что после того как отправляю его в sleep (hibernate) на ночь, вижу на утро его проснувшимся. Я поборол данную проблему в несколько шагов. Вообще, данное руководство относится не только к Windows 7, а может относиться и к другим версиям Windows.
Читать дальше →
Total votes 82: ↑63 and ↓19 +44
Comments 68

Все «секреты» Windows 7

Reading time 10 min
Views 390K
По многочисленным просьбам — перевод статьи «The Bumper List of Windows 7 Secrets».

Здесь пропущено вступление о том как здорово, что Windows 7 вышла в свет, которое все равно все пропустят и будут читать сами «секреты».

1. Управление окнами


Вы, наверное, уже знаете, что Windows 7 делает работу с окнами во многом проще. Окно можно «прикрепить» к левой или правой половине экрана просто придвинув к соответствующему краю, а так же окно можно разворачивать/восcтанавливать по вертикали двойным щелчком по нижней границе окна. Но вот чего вы, наверное, не знаете, так это того, что все эти действия доступны через горячие клавиши.
  • Win+Влево и Win+Вправо — прикрепить окно
  • Win+Вверх и Win+Вниз — разворачивает и восстанавливает/сворачивает окно
  • Win+Shift+Вверх и Win+Shift+Вниз — разворачивает и восстанавливает окно по вертикали
Но это далеко не всё
Total votes 163: ↑137 and ↓26 +111
Comments 255

Телевизоры. Часть 2. Плазма или ЖК, шасси, диагональ, передача движения, цвет, влияние на зрение

Reading time 9 min
Views 322K
Снова здравствуйте, дорогие хабрачеловеки.

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

Можем продолжить. Во второй части я хотел бы поделиться своими размышлениями о выборе диагонали телевизора для различных применений, выборе технологии, а так же о том, как кадровая интерполяция влияет на плавность движения и попытаться развенчать некоторые мифы касательно современных телевизоров. Также, хочу затронуть тему влияния различных параметров телевизора на зрение.
Читать дальше →
Total votes 114: ↑111 and ↓3 +108
Comments 181

Ускоряем логин через SSH в Ubuntu в 100 раз

Reading time 2 min
Views 42K
Долгое время я мучился ужасно медленным удаленным логином на свои Ubuntu сервера (все 2 ). Ужасно медленно в данном случае — 2-3 секунды. Не то чтобы это было совсем фатально, но когда логин через ключ — хочется чтобы все работало мгновенно — в конце концов, у нас не 486SX.

Длительное гугление приводило только к стандартным решениям:
  1. UseDNS no в /etc/ssh/sshd_config — ускоряет логин в случае тормозного DNS. В моём случае стоял локальный кеширующий DNS, потому и так все было быстро.
  2. Принудительное указание IPv4 в SSH клиенте — особо не помогло, видимо не у всех тормозит
И на askubuntu.com вопрос c bounty уныло провисел долгие недели без ответа…

Читать дальше →
Total votes 145: ↑135 and ↓10 +125
Comments 44

Знаешь ли ты JAVA, %username%?

Reading time 11 min
Views 148K
JAVA Evil EditionНедавно я сдавал экзамен Oracle Certified Professional Java Programmer (бывший Sun Certified), и за время подготовки прорешал огромное количество различных задачек. Отдельные задачки по джаве иногда появляются на хабре и вызывают немалый интерес, поэтому я решил поделиться накопленным и сделать небольшую подборку.

Итак, ниже представлен десяток наиболее, на мой взгляд, интересных задач по Java SE из более чем 1000, проработанных мной. Сложность варьируется от средней до ооооооочень сложной. Решение большинства задач практически не требует знания API, достаточно логики и фундаментальных основ Java.

К слову, сложность экзамена Oracle Certified Professional Java Programmer гораздо ниже чем сложность данного теста, поэтому все, кто правильно ответит хотя бы на половину этих вопросов, может смело сдавать этот экзамен без всякой подготовки.

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

ВНИМАНИЕ: во второй половине статьи — ответы и подробные пояснения по соответствующим нюансам JAVA.

Читать дальше →
Total votes 136: ↑124 and ↓12 +112
Comments 85

Обратная сторона луны

Reading time 14 min
Views 46K
При написании приложений, одной из важнейших вопросов являются потребление памяти и отзывчивость (скорость работы).

Считается, что сборщик мусора – черный ящик, работу которого нельзя предугадать.

А еще говорят, что GC в .NET практически не настраиваемый. А еще, что нельзя посмотреть исходники как классов .NET Framework, так и CLR, GC и т.п.

А я скажу как бы ни так!

В данной статье мы рассмотрим:
  • структура организации размещения объектов в памяти
  • CLR 4.5 Background Server GC
  • правильная настройка сборщика мусора
  • эффективный апгрейд приложений до .NET 4.0+
  • правильное ручное управление памятью

Читать дальше →
Total votes 138: ↑132 and ↓6 +126
Comments 28

Постигаем Git

Reading time 6 min
Views 55K
От переводчика: в этой статье нет описания команд git, она подразумевает, что вы уже знакомы с ним. Здесь описывается вполне здравый, на мой взгляд, подход к содержанию публичной истории в чистоте и порядке.

Если вы не понимаете, что побудило сделать git именно таким, то вас ждут страдания. Используя множество флагов (--flag), вы сможете заставить git работать так, как по вашему мнению он должен работать, вместо того, чтобы работать так, как git того хочет. Это как забивать гвозди отверткой. Работа делается, но хуже, медленнее, да и отвертка портится.
Читать дальше →
Total votes 126: ↑120 and ↓6 +114
Comments 91

Я не знаю ООП

Reading time 12 min
Views 547K
Я не умею программировать на объектно-ориентированных языках. Не научился. После 5 лет промышленного программирования на Java я всё ещё не знаю, как создать хорошую систему в объектно-ориентированном стиле. Просто не понимаю.

Я пытался научиться, честно. Я изучал паттерны, читал код open source проектов, пытался строить в голове стройные концепции, но так и не понял принципы создания качественных объектно-ориентированных программ. Возможно кто-то другой их понял, но не я.

И вот несколько вещей, которые вызывают у меня непонимание.
Читать дальше →
Total votes 412: ↑309 and ↓103 +206
Comments 870

Построение минимальных выпуклых оболочек

Reading time 7 min
Views 132K

Проведя небольшое научное исследование (проще говоря, выполнив поиск на сайте), обнаружил, что на хабре имеется всего две статьи с тегом вычислительная геометрия, причем одна из них оказалась моей. Т.к. в последнее время я несколько заинтересовался этой тематикой, то решил продолжить тему алгоритмической геометрии рассмотрением задачи построения так называемых минимальных выпуклых оболочек. Хотя рисунок справа и дает проницательному хаброчитателю исчерпывающее объяснение того, что это такое, тем не менее под катом будут даны чуть более формальные определения и описаны два классических алгоритма построения минимальных выпуклых оболочек.
Читать дальше →
Total votes 99: ↑94 and ↓5 +89
Comments 56

Защита АСУ ТП по-американски

Reading time 1 min
Views 8K
Пост написан из-за появления вчерашних новостей о вирусе-шпионе (например, вот). как ни странно, но проблема защиты промышленных объектов в РФ ставится не так остро, как должна бы… в СМИ очень часто можно услышать про законы о персональных данных, а вот защитой АСУ ТП(системы управления технологическими процессами), похоже, никто особо не занимался (защита критически важных объектов регламентирована документами ФСТЭК, но они имеют гриф и не доступны простым смертным). Для тех же компаний, которые не попали в список этих самых «критически важных», существует только стандарт Газпрома… и все, больше никаких документов и рекомендаций в области защиты АСУ ТП нет.
В США дело обстоит в корне наоборот, и американский US CERT выкладывает в свободный доступ свои рекомендации по защите АСУ ТП. Желающих ознакомиться прошу под кат.
Читать дальше →
Total votes 29: ↑23 and ↓6 +17
Comments 19

Когда использовать Parallel.ForEach, а когда PLINQ

Reading time 13 min
Views 74K

Введение


Обычно, при оптимизации программы для многоядерных компьютеров первым шагом является выяснение возможности разделения алгоритма на части, выполняющиеся параллельно. Если для решения задачи необходимо параллельно обрабатывать отдельные элементы из большого набора данных, то первыми кандидатами станут новые возможности параллельности в .NET Framework 4: Parallel.ForEach и Parallel LINQ (PLINQ)

Parallel.ForEach


Класс Parallel содержит метод ForEach, представляющий собой многопоточную версию обычного цикла foreach в C#. Подобно обычному foreach, Parallel.ForEach выполняет итерации над перечислимыми данными (enumerable), но с использованием множества потоков. Одна из более часто используемых перегрузок Parallel.ForEach выглядит следующим образом:

public static ParallelLoopResult ForEach<TSource>(
			 IEnumerable<TSource> source,
			 Action<TSource> body)

Ienumerable указывает на последовательность, по которой нужно выполнить итерации, а Action body задает делегат, вызываемый для каждого элемента. Полный список перегрузок Parallel.ForEach можно найти здесь.

PLINQ


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

Выполнение независимых операций


Читать дальше →
Total votes 79: ↑73 and ↓6 +67
Comments 9

Еще Одно Руководство по Монадам (часть 2: функции >>= и return)

Reading time 20 min
Views 9.7K
By Mike Vanier

Две фундаментальные монадические операции


Помните, я говорил, что монады обобщают композицию и применение функций? Вот об этом здесь и поговорим. Наберитесь терпения, нам потребуется какое-то время.

К этому моменту, я надеюсь, у вас сложилось хотя бы смутное ощущение монад, что они такое и для чего используются. Я уже упоминал одну из особенностей функционального программирования — композицию функций, благодаря которой мы создаем новые функции, объединяя старые. Функциональные программисты постоянно говорят о «комбинируемости» {1}, подразумевая, что если что-то в языке программирования не комбинируется, значит, оно немногого стоит. Аналогично, наши новоявленные монадические функции не были столь же полезны, если бы они не компоновались так, как это есть на самом деле. Но мы еще увидим, для их композиции нельзя использовать стандартную функцию «точка» (.) языка Haskell. Мы придем к выводу, что тут нужно что-то большее, и определим две фундаментальные монадические операции (или, для начала, их типы).
Читать дальше →
Total votes 19: ↑17 and ↓2 +15
Comments 4

Information

Rating
Does not participate
Registered
Activity