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

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

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

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

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

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


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

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

      Продолжу с места в карьер, так как где разбилось — там разбилось, а писать дополнительные введения к каждой серии выше моих сил.
      Читать дальше →
    • Here be dragons: Управление памятью в Windows как оно есть [1/3]


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

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

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

        Цель данной статьи — не полное описание работы менеджера памяти (не хватит ни места ни опыта), а попытка пролить хоть немного света на темное царство мифов и суеверий, окружающих вопросы управления памятью в Windows.
        Читать дальше →
      • Пробуем открыть свое дело

          Пролог


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

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

          Много буковок...
        • Кто убил пролог?

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

          В своих рассуждениях я буду отталкиваться от факта, что три семейства из четырех чувствуют себя неплохо, в том смысле, что у них есть множество преемников. По отношению к этим трем Пролог чрезвычайно отстал. Но в начале 1980-ых было по-другому. Тогда Пролог соревновался с Лисп за умы тех, кто занимался не-IBM программированием (назовем это так, чтобы избежать неоднозначного термина ИИ).
          Читать дальше →
        • Схема дизайнерского процесса от Американского института изобразительных искусств (AIGA)

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



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



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

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

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

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


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

              μTorrent


              Это, пожалуй, самая забавная часть. При очевидно высоких навыках программирования, авторы либо не читали, либо не поняли вот этот документ. Вот что происходит с дефолтными настройками:
              Читать дальше →
            • Ускорение загрузки Windows for fun and profit

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

                Про то, почему отключение pagefile-а скорее вредно, чем полезно — как нибудь в другой раз, а пока…
                Под катом много однообразных картинок и немножко унылого текста
              • Когда Windows 7 просыпается сам

                  После установки Windows 7 RTM стал сталкиваться с тем, что после того как отправляю его в sleep (hibernate) на ночь, вижу на утро его проснувшимся. Я поборол данную проблему в несколько шагов. Вообще, данное руководство относится не только к Windows 7, а может относиться и к другим версиям Windows.
                  Читать дальше →
                • Все «секреты» Windows 7

                  • Перевод
                  По многочисленным просьбам — перевод статьи «The Bumper List of Windows 7 Secrets».

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

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


                  Вы, наверное, уже знаете, что Windows 7 делает работу с окнами во многом проще. Окно можно «прикрепить» к левой или правой половине экрана просто придвинув к соответствующему краю, а так же окно можно разворачивать/восcтанавливать по вертикали двойным щелчком по нижней границе окна. Но вот чего вы, наверное, не знаете, так это того, что все эти действия доступны через горячие клавиши.
                  • Win+Влево и Win+Вправо — прикрепить окно
                  • Win+Вверх и Win+Вниз — разворачивает и восстанавливает/сворачивает окно
                  • Win+Shift+Вверх и Win+Shift+Вниз — разворачивает и восстанавливает окно по вертикали
                  Но это далеко не всё
                • Телевизоры. Часть 2. Плазма или ЖК, шасси, диагональ, передача движения, цвет, влияние на зрение

                  • Tutorial
                  Снова здравствуйте, дорогие хабрачеловеки.

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

                  Можем продолжить. Во второй части я хотел бы поделиться своими размышлениями о выборе диагонали телевизора для различных применений, выборе технологии, а так же о том, как кадровая интерполяция влияет на плавность движения и попытаться развенчать некоторые мифы касательно современных телевизоров. Также, хочу затронуть тему влияния различных параметров телевизора на зрение.
                  Читать дальше →
                • Ускоряем логин через SSH в Ubuntu в 100 раз

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

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

                    Читать дальше →
                  • Знаешь ли ты JAVA, %username%?

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

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

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

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

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

                    Читать дальше →
                  • Обратная сторона луны

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

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

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

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

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

                      Читать дальше →
                    • Постигаем Git

                      • Перевод
                      От переводчика: в этой статье нет описания команд git, она подразумевает, что вы уже знакомы с ним. Здесь описывается вполне здравый, на мой взгляд, подход к содержанию публичной истории в чистоте и порядке.

                      Если вы не понимаете, что побудило сделать git именно таким, то вас ждут страдания. Используя множество флагов (--flag), вы сможете заставить git работать так, как по вашему мнению он должен работать, вместо того, чтобы работать так, как git того хочет. Это как забивать гвозди отверткой. Работа делается, но хуже, медленнее, да и отвертка портится.
                      Читать дальше →
                    • Я не знаю ООП

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

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

                        И вот несколько вещей, которые вызывают у меня непонимание.
                        Читать дальше →
                      • Построение минимальных выпуклых оболочек

                        • Tutorial

                        Проведя небольшое научное исследование (проще говоря, выполнив поиск на сайте), обнаружил, что на хабре имеется всего две статьи с тегом вычислительная геометрия, причем одна из них оказалась моей. Т.к. в последнее время я несколько заинтересовался этой тематикой, то решил продолжить тему алгоритмической геометрии рассмотрением задачи построения так называемых минимальных выпуклых оболочек. Хотя рисунок справа и дает проницательному хаброчитателю исчерпывающее объяснение того, что это такое, тем не менее под катом будут даны чуть более формальные определения и описаны два классических алгоритма построения минимальных выпуклых оболочек.
                        Читать дальше →
                      • Защита АСУ ТП по-американски

                          Пост написан из-за появления вчерашних новостей о вирусе-шпионе (например, вот). как ни странно, но проблема защиты промышленных объектов в РФ ставится не так остро, как должна бы… в СМИ очень часто можно услышать про законы о персональных данных, а вот защитой АСУ ТП(системы управления технологическими процессами), похоже, никто особо не занимался (защита критически важных объектов регламентирована документами ФСТЭК, но они имеют гриф и не доступны простым смертным). Для тех же компаний, которые не попали в список этих самых «критически важных», существует только стандарт Газпрома… и все, больше никаких документов и рекомендаций в области защиты АСУ ТП нет.
                          В США дело обстоит в корне наоборот, и американский US CERT выкладывает в свободный доступ свои рекомендации по защите АСУ ТП. Желающих ознакомиться прошу под кат.
                          Читать дальше →
                        • Опыт переезда на SSD

                            На прошлой неделе менеджер дал добро на апгрейд машины с HDD на SSD всем четверым моим коллегам включая меня. Помогло мое возмущенное письмо о вреде долгой компиляции и тормозов Resharper'а на нервы разработчика. Рассказал что запуск студии занятие нетривиальное, а уж компиляция и последующий рестарт ASP.NET вообще крайне болезнены.

                            В принципе конфигурация хорошая, Xeon W3503 с 4GB памяти, и комп должен по идее летать (не в играх понятно, а в офисной обстановке). Но к сожалению все это добро тормозится самым обычным сигейтом на 250 гигов. Поэтому разрешив денежный вопрос, я принялся выбирать подходящий SSD. Для минимизации даунтайма, я решил просто склонировать свой диск. Посмотрев на текущий занятый обьем, я остановился на диске от 100GB. В местном магазине были закуплены SSD Corsair 115GB по $170 в количестве 4-х штук и розданы каждому. Дешевле было бы брать на newegg'е, но временные ограничения предполагали покупку «сегодня же», поэтому брал что было. Заодно и докупил памяти до 8 гигов.

                            Итак мне, как самому инициативному, нужно было перенести свою систему, а так же помочь коллегам. Для клонирования я воспользовался Clonezilla. Для манипулирования разделами, я так же скачал Gparted. И Clonezilla и Gparted надо прожечь на болванки или флешки, как вам проще.
                            Читать дальше →
                          • Когда использовать Parallel.ForEach, а когда PLINQ

                            • Перевод

                            Введение


                            Обычно, при оптимизации программы для многоядерных компьютеров первым шагом является выяснение возможности разделения алгоритма на части, выполняющиеся параллельно. Если для решения задачи необходимо параллельно обрабатывать отдельные элементы из большого набора данных, то первыми кандидатами станут новые возможности параллельности в .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 и наоборот.

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


                            Читать дальше →
                            • +67
                            • 41,6k
                            • 9