• Wi-Fi: неочевидные нюансы (на примере домашней сети)

      Сейчас многие покупают точки доступа 802.11n, но хороших скоростей достичь удается не всем. В этом посте поговорим о не очень очевидных мелких нюансах, которые могут ощутимо улучшить (или ухудшить) работу Wi-Fi. Всё описанное ниже применимо как к домашним Wi-Fi-роутерам со стандартными и продвинутыми (DD-WRT & Co.) прошивками, так и к корпоративным железкам и сетям. Поэтому, в качестве примера возьмем «домашнюю» тему, как более родную и близкую к телу. Ибо даже самые администые из админов и инженеристые из инженеров живут в многоквартирных домах (или поселках с достаточной плотностью соседей), и всем хочется быстрого и надежного Wi-Fi.
      [!!]: после замечаний касательно публикации первой части привожу текст целиком. Если вы читали первую часть — продолжайте отсюда.
      Читать дальше →
    • Мобильная связь до 50% дешевле?! Реальность

        image

        Приветствую.
        Я хочу рассказать как можно сэкономить до 50% на мобильной связи. Не используя гиковских средств. Вроде скайпа.

        Предисловие

        Мало кто знает, что операторы сотовой связи получают колоссальный процент дохода от тех, кто однажды купил сим-карту-вставил и звонит. Это происходит потому, что купив тариф с завлекательной надписью или по совету консультанта чаще всего мы не задумываемся о том, что идет время, у операторов выходят все новые и новые предложения. И на старых тарифах цена поднимается.
        Операторы специально повышают цены на старых тарифах. Мотивируя это тем, чтобы пользователи переходили на новые тарифы и не засиживались на старых. Но в реальности, мало кто следит за изменениями в тарифах. В обществе укоренено мнение, что раз написано в бумажке 2 рубля минута, значит так будет всегда. На самом деле всё иначе. Операторы попросту наживаются на абонентах. И придраться к ним трудно, ведь все для нас, для нашего блага.
        К сожалению, действительно выгодные старые тарифы остались только у корпоративных пользователей — подключение к таким тарифам возможно только на сером рынке. Для нас же обычных обывателей идет постоянное повышение цен.

        В этом топике основной упор сделан на то, что вас по каким-то причинам устраивает ваш оператор. И вы просто хотите сэкономить в рамках своего оператора. Не взирая на то, что у конкурентов дешевле.
        Однако, желающие могут так же воспользоваться рекомендациями из этого топика и подобрать себе что нибудь из тарифов другого оператора.
        В этом топике, акцент будет сделан только на логистику.
        Никаких секретов. :)

        Главное начать!
        Хочу сэкономить
      • Восстанавливаем флешки

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

          image
          Читать дальше →
        • Ускорение загрузки Windows for fun and profit

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

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

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

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

            На самом деле, я повидал так много заблуждений, которые оставляют след в чужих (и моих собственных) программах, что посчитал полезным составить список самых частых проблем.
            Читать дальше →
          • GC и большой heap: друзья или враги?

              Споры о том, что лучше: ручное управление или автоматическое ведутся во многих областях науки и техники. Положиться на человека или отдаться на откуп бесстрастным механизмам и алгоритмам? Похоже, что в мире создания Enterprise решений чаша весов склонилась все-таки в сторону автоматического управления памятью, большей частью из-за того, что возиться с указателями, ручным управлением памятью и закрашивать седину после каждого бага, появившегося из-за «неправильного» компилятора С/C++ не хочется сейчас уже никому. Но до сих пор возникают на форумах топики, где не сдающиеся суровые приверженцы ручного управления памятью яростно и непримиримо отстаивают свои ретроградные взгляды в борьбе с прогрессивной частью человечества. Пусть их, оставим их в покое.

              Одной из наиболее часто использующихся платформ с механизмами автоматического управления памятью стала Java. Но, автоматическое управление памятью принесло не только комфорт в нелегкий труд программистов, но и свои недостатки, с которыми приходиться сталкиваться всё чаще и чаще. Современные многопользовательские приложения, способные обработать огромный поток транзакций, требуют значительных аппаратных ресурсов, размеры которых раньше было трудно даже вообразить. Однако, дело не в размерах этих ресурсов, дело в том, что сборщик мусора, существующий в большинстве современных JVM, не может работать эффективно с большими объемами памяти.
              Читать дальше →
            • Опыт эксплуатации MySQL Master-Master — как пережить аварию датацентра

                Всем привет!

                Сегодня поговорим о том, для каких задач на самом деле полезна MySQL Master-Master репликация, для каких — полностью бесполезна и вредна, какие мифы и заблуждения с ней связаны и какую практическую пользу можно быстро получить от данной технологии. Приведу конкретные примеры настройки и схемы архитектур.

                Говорить о MySQL Master-Master репликации — в контекстах высокой доступности и производительности — модно, но, к сожалению, многие не понимают ее сути и связанных с технологией серьезных ограничений.
                Начнем с того, что в классическом MySQL «настоящей» Master-Master репликации — пока нет :-) Но если постараться, можно все таки просто и быстро настроить эффективную схему выживания при отказе одного датацентра и получить свою долю счастья.


                Читать дальше →
              • YouTube на торрентах

                  P2P YouTube — новое расширение от Torrent Stream, для браузеров Google Chrome; Mozilla Firefox и Opera, которое дает возможность воспроизводить видео на сайте YouTube посредством торрентов!

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

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

                  Хотите больше узнать о функциях и возможностях расширения?
                  Читайте далее
                • Настрой свой Google

                    После написания этого поста, меня заинтересовали параметры поиска которые можно использовать, для удобной работы.
                    Задавшись этим вопросом, в рунете я более менее полной информации не нашел.
                    Но! Оказывается Google уже давно и для всех, все показал.

                    Читать дальше →
                  • Do It Yourself Java Profiling

                      На прошедшей конференции Appication Developer Days, Роман Елизаров (elizarov) рассказал, как профилировать, т.е. исследовать производительность любых Java-приложений, без использования специализированных инструментов, будь они хоть вендорские, хоть open-source.Оказывается, можно использовать малоизвестные, встроенные в JVM возможности (threaddumps, java agents, bytecode manipulation), и быстро и эффективно реализовать профилирование, которое можно запускать постоянно даже на боевой системе.Вот видео доклада (тут оно косолапо эмбедится, но оно 1280x720, все отлично читаемо):

                      Но я предлагаю также, взглянуть на 70K текста иллюстрированной статьи-стенограммы под катом, составленной мной по видео и слайдам.
                      Статья-стенограмма. Многобукв.
                    • Интересный багфикс, или поломай скайп полностью

                        После недавней статьи все наверное стали (чаще) использовать теги для «пущей убедительности». ну например
                        <font color="#FF0000">НЕ забудь деньги!</font>
                        ну или более убедительный
                        <font size="42">НЕ забудь деньги!</font>
                        ну и вот, во что это вылилось:

                        ещё не догадались в чём дело?
                        Читать дальше →
                      • Инструкция-шпаргалка для начинающих

                        • Tutorial
                        Если в один прекрасный момент вам ударило в голову желание насадить разумное, доброе, вечное, и пересадить всех с SVN на GIT, сразу встают три проблемы:
                        • Объяснить зачем это нужно разработчикам и руководству
                        • Ввести в обиход новую схему работы с кодом
                        • Научить ничего не подозревающих девелоперов новым техникам
                        Читать дальше →
                      • 5 действительно полезных шаблонов адаптивной разметки

                          В связи с наплывом интересующихся адаптивной вёрсткой решил перевести эту статью. Пускай полежит здесь.

                          image

                          Адаптивная разметка требует совершенно иного образа мышления при планировании структуры макета, что является одновременно и сложным и интересным. Чтобы перепрограммировать свой мозг, чтобы посмотреть на макеты по-новому, мы собираемся взглянуть на некоторые интересные шаблоны адаптивной разметки, которые были созданы талантливыми дизайнерами по всему вебу.
                          Читать дальше →
                          • +147
                          • 95,8k
                          • 38
                        • Уязвимы по определению

                            У многих людей, как-либо связанных с безопасностью, периодически возникает желание заняться pentest'ом, то есть тестом на проникновение. И чаще всего начинают все с pentest'а веб-приложений. Порог вхождения довольно мал (простейшая sqli определяется добавлением кавычки в параметр и эксплуатируется не особо сложнее), но при этом встречаются и довольно сложные задания, которые заставляют потратить пару-тройку дней на ковыряние.
                            Но возникает вопрос — где применять теоретические знания, без страха внезапного появления маски-шоу? Под катом проведу небольшой обзор полигонов для экспериментов по pentest'у.
                            Читать дальше →
                          • AeroFS, альфа-тестирование

                              Не так давно на хабре мелькал топик про aerofs.
                              Многие из нас тогда кричали «Вау! Круто! Маст хэв и всё такое». Время шло, интерес поутих, все подзабыли как-то. Я же не отчаивался и оставил несколько запросов на инвайты. Ну и периодически общался с разработчиками. Видимо, время пришло, и мой самый представительный ящик попал в число счастливчиков и получил инвайт.
                              Само собой, в конце поста — раздача попугаев (то есть инвайтов).
                              Под катом же — небольшой обзор и скриншоты данной мегаштуки (нет, правда, это именно то, что нужно каждому человеку, у которого больше 1 ПК). Все скриншоты сделаны под Ubuntu. Макоси нет, а windows искать лениво.
                              Читать дальше →
                            • Защита пароля при передаче по открытому каналу (часть 1)

                                Использование https при аутентификации уже давно стало правилом хорошего тона. Однако, необходимость покупки сертификата приводит к тому, что многие владельцы web-ресурсов по прежнему используют для аутентификации открытый канал и ваши пароли доступа могут быть перехвачены злоумышленником, имеющим доступ к сети, в которой вы работаете. Следует отметить, что использование https в общем случае не гарантирует защиты от перехвата передаваемого трафика. На сегодняшний день существуют решения, основанные на использовании специальных прокси и доменных политик, позволяющие успешно читать https трафик в корпоративных сетях. Далее о том, как все же защитить пароль от перехвата.
                                Читать дальше →
                              • Несколько неожиданное поведение кеширования при boxing-е

                                  Недавно на The Daily WTF писали о том, как с помощью Reflection можно неплохо подпортить кровь коллегам.

                                  Допустим, у вас есть следующий код:

                                  public class ConstantHolder {
                                  	public static final Integer THE_ANSWER_TO_LIFE_THE_UNIVERSE_AND_EVERYTHING = 42;
                                  }
                                  
                                  и
                                  public class TestBoxingVulnerability {
                                  	public static void main(String[] args) {
                                  		int theAnswer = ConstantHolder.THE_ANSWER_TO_LIFE_THE_UNIVERSE_AND_EVERYTHING;
                                  		System.out.println(theAnswer == 42);
                                  	}
                                  }
                                  


                                  Очевидно, что будет выведено true. Однако в проекте может оказаться такой код, который может изменить ситуацию в обратную сторону. Под катом приведён пример такого кода.
                                  Читать дальше →
                                • Адаптивный и мобильный дизайн с CSS3 Media Queries

                                  • Перевод
                                  Разрешение экрана в наши дни колеблется от 320px (iPhone) до 2560px (большие мониторы) или даже выше. Пользователи больше не просматривают сайты только на настольных компьютерах. Теперь пользователи используют мобильные телефоны, небольшие ноутбуки, планшетные устройства, такие как iPad или Playbook для доступа в интернет. Поэтому, традиционный дизайн с фиксированной шириной больше не работает. Дизайн должен быть адаптивным. Структура должна автоматически изменяться с учетом всех разрешений дисплеев. Эта статья покажет вам как создавать кросс-браузерный адаптивный дизайн при помощи HTML5 и CSS3 media queries.
                                  Читать дальше →
                                • Использование SPI механизма для создания расширений

                                    Архитектура большинства Java(и не только) приложений сегодня предусматривает возможность расширения функционала посредством различного рода магических воздействий на код. В последнее время это также стало возможно, если использовать какой-нибудь модный фреймворк или IoC-контейнер. Но что делать, если приложение долгоживущее и слишком сложное для того, чтобы переводить его на использование какого либо фреймворка?

                                    В последнем приложении, с которым я работал, был реализован на тот момент неизвестный мне велосипед SPI механизм, который искал в джарках текстовые файлы вида META-INF/services/<qualified interface name> и брал оттуда название нужного класса, реализующего этот интерфейс, далее этот класс использовался как расширение. Поискав в интернете, узнал, что Service Provider Interface(SPI) представляет собой программный механизм для поддержки сменных компонентов и что этот механизм уже довольно давно используется в Java Runtime Environment(JRE), например в Java Database Connectivity(JDBC):
                                    ps = Service.providers(java.sql.Driver.class);
                                    try {
                                      while (ps.hasNext()) {
                                        ps.next();
                                      }
                                    } catch (Throwable t) {
                                      // Do nothing
                                    }
                                    


                                    Благодаря этому коду приложения больше не нуждаются в конструкции Class.forName(<driver class>) (хотя и с ней будут работать), JDBC драйверы будут подгружены автоматически при первом обращении к методам класса DriverManager.

                                    SPI механизм также используется в Java Cryptography Extension(JCE), Java Naming and Directory Service(JNDI), Java API for XML Processing(JAXP), Java Business Integration(JBI), Java Sound, Java Image I/O.

                                    Как это работает?


                                    Весь смысл в разделении логики на сервис(Service) и провайдеры(Service Providers). Ссылки на провайдеры сохраняются в джарках расширений в текстовом файле(UTF-8) META-INF/services/<qualified service class>, в каждой строке полное имя класса провайдера. Пустые строки и комментарии(начинающиеся с символа #) игнорируются. Ограничения на провайдеры: они должны реализовывать интерфейс либо наследоваться от класса сервиса и иметь конструктор по умолчанию(zero-argument public constructor).
                                    Читать дальше →