Здравствуй, дорогой читатель. Давно хотел написать подобную статью, но либо не хватало времени, либо мешала предательская лень. Но, как бы там ни было, все-таки у меня получилось собраться с мыслями, чтобы написать то, что принесет вам, я надеюсь, какую нибудь пользу. С радостью поделюсь своими знаниями и опытом, в ответ с вас причитается время и внимание. По моему мнению, данная публикация хорошо подойдет для тех, кто готов определиться в своих интересах и хочет связать свою жизнь с IT — тем или иным образом. Итак, поехали!
Andrei @Epidemia
Пользователь
Chrome Remote Desktop — теперь подключаемся к ПК и со смартфона на Android
4 min
168KЗдравствуй, Хабр.
Сегодня Гугл для меня совершенно неожиданно выпустил обновление своей весьма интересной и полезной технологии — Chrome Remote Dektop, которая, согласно своему названию, предоставляет удаленный доступ через Интернет к рабочему столу компьютера другим устройствам: ПК, смартфон на Android и, немного позже, iOS. Точнее, новое — поддержка мобильных устройств, подключение для ПК было доступно и раньше. Испытания в жизни с применением смартфона: под катом.
Сегодня Гугл для меня совершенно неожиданно выпустил обновление своей весьма интересной и полезной технологии — Chrome Remote Dektop, которая, согласно своему названию, предоставляет удаленный доступ через Интернет к рабочему столу компьютера другим устройствам: ПК, смартфон на Android и, немного позже, iOS. Точнее, новое — поддержка мобильных устройств, подключение для ПК было доступно и раньше. Испытания в жизни с применением смартфона: под катом.
+34
Все «секреты» Windows 7
10 min
392KTranslation
По многочисленным просьбам — перевод статьи «The Bumper List of Windows 7 Secrets».
Здесь пропущено вступление о том как здорово, что Windows 7 вышла в свет, которое все равно все пропустят и будут читать сами «секреты».
Вы, наверное, уже знаете, что Windows 7 делает работу с окнами во многом проще. Окно можно «прикрепить» к левой или правой половине экрана просто придвинув к соответствующему краю, а так же окно можно разворачивать/восcтанавливать по вертикали двойным щелчком по нижней границе окна. Но вот чего вы, наверное, не знаете, так это того, что все эти действия доступны через горячие клавиши.
Здесь пропущено вступление о том как здорово, что Windows 7 вышла в свет, которое все равно все пропустят и будут читать сами «секреты».
1. Управление окнами
Вы, наверное, уже знаете, что Windows 7 делает работу с окнами во многом проще. Окно можно «прикрепить» к левой или правой половине экрана просто придвинув к соответствующему краю, а так же окно можно разворачивать/восcтанавливать по вертикали двойным щелчком по нижней границе окна. Но вот чего вы, наверное, не знаете, так это того, что все эти действия доступны через горячие клавиши.
- Win+Влево и Win+Вправо — прикрепить окно
- Win+Вверх и Win+Вниз — разворачивает и восстанавливает/сворачивает окно
- Win+Shift+Вверх и Win+Shift+Вниз — разворачивает и восстанавливает окно по вертикали
+111
C# .NET: Пять маленьких чудес, которые сделают ваш код лучше. Часть 1
5 min
26KЗдравствуй, Хабрасообщество. Хотелось бы представить на суд твой свои переводы серии статей Джеймса Майкла Харе (James Michael Hare) «Маленькие чудеса C#». Итак, первая часть перед вами!
Эти маленькие советы и рекомендации сделают ваш код более кратким, производительным и обслуживаемым. Наверное, многие из вас знают обо всех или некоторых из них, но игнорируют их, либо просто не знают.
Эти маленькие советы и рекомендации сделают ваш код более кратким, производительным и обслуживаемым. Наверное, многие из вас знают обо всех или некоторых из них, но игнорируют их, либо просто не знают.
+31
Интервью с легендой спортивного программирования Петром Митричевым
12 min
73KГоворят, когда он появился на свет, к нему заглянул сам Дональд Кнут. Говорят, когда его пригласили работать в Google, он за 15 минут переписал весь поисковый алгоритм 16 раз. Говорят, он с улыбкой следит за прогрессом квантовых вычислений, так как при виде его числа от страха факторизуются сами. Но мы точно знаем одно: Пётр — настоящий бог спортивного программирования.
+77
Полезные книги для программиста в геймдеве
2 min
102KПривет, Хабр!
Ничего не писал со времен своей первой статьи, решил, что пора это исправить.
Существует мнение, что про геймдев внятной литературы почти нет, все знания надо получать практическим путем. С моей точки зрения, в этом мнении есть зерно истины, тем не менее, я не могу полностью с ним согласиться.
Ниже я даю рецензии на книжки, которые считаю очень полезными в различных разделах computer science, которые используются в геймдеве. Я намеренно опускаю книги по C++ и алгоритмам: мне кажется, эта тема уже настолько изучена и освещена, что больше про нее не стоит рассказывать.
Я старался покрыть максимальное количество разных топиков, особенно тех, что спрашивают на собеседованиях. Я старался воздерживаться от domain-specific литературы: профессионалы и так знают. Все картинки содержат ссылки на амазон.
А какие книжки нравятся вам?
Также в комментах можете писать, на какие темы вам были бы интересны посты.
Ничего не писал со времен своей первой статьи, решил, что пора это исправить.
Существует мнение, что про геймдев внятной литературы почти нет, все знания надо получать практическим путем. С моей точки зрения, в этом мнении есть зерно истины, тем не менее, я не могу полностью с ним согласиться.
Ниже я даю рецензии на книжки, которые считаю очень полезными в различных разделах computer science, которые используются в геймдеве. Я намеренно опускаю книги по C++ и алгоритмам: мне кажется, эта тема уже настолько изучена и освещена, что больше про нее не стоит рассказывать.
Я старался покрыть максимальное количество разных топиков, особенно тех, что спрашивают на собеседованиях. Я старался воздерживаться от domain-specific литературы: профессионалы и так знают. Все картинки содержат ссылки на амазон.
А какие книжки нравятся вам?
Также в комментах можете писать, на какие темы вам были бы интересны посты.
+57
Обзор образовательных ресурсов к 1 сентября
4 min
66KСегодня наступил день, символизирующий одно из сильнейших и лучших свойств человека — его интеллект. День Знаний, он же 1 сентября, он же начало учебного года. Ведь кем бы мы были без знаний и науки? Болтались бы где-то внизу пищевой пирамиды.
В честь этого рокового для каждого школьника и студента дня, мы решили сделать подборку различных образовательных ресурсов в сфере IT. Когда-то мы уже делали нечто подобное для желающих научиться веб-разработке и дизайну. Всё-таки учиться никогда не поздно, как бы банально это ни звучало. А в наше время так и совсем нельзя прекращать учиться, а то велик риск всё-таки оказаться на дне пирамиды, только уже социальной.
В честь этого рокового для каждого школьника и студента дня, мы решили сделать подборку различных образовательных ресурсов в сфере IT. Когда-то мы уже делали нечто подобное для желающих научиться веб-разработке и дизайну. Всё-таки учиться никогда не поздно, как бы банально это ни звучало. А в наше время так и совсем нельзя прекращать учиться, а то велик риск всё-таки оказаться на дне пирамиды, только уже социальной.
+51
Эксперименты с моделированием ходьбы
3 min
30KНебольшой рассказ о том, как простенькая физическая модель ходьбы, написанная практически на коленке, дала неожиданно хорошие результаты при сравнении с реальностью. За подробностями прошу под хабракат.
+58
IText: вытаскиваем текст из PDF
5 min
60KДоброе время суток, хабровчане!
Недавно столкнулся с задачей: научиться вытаскивать текст из PDF запоминая его позицию на странице. И, конечно же, в несложной поначалу задаче вылезли подводные камни. Как же в итоге получилось это решить? Ответ под катом.
+13
Лабораторные по многопоточности в Java: Parallel Copy
4 min
25KTutorial
Хорошие лабораторные по многопоточности (простые, понятные, нетривиальные и полезные в народном хозяйстве) — большая редкость. Предлагаю Вам одно условие и четыре лабораторные работы по элементарной многопоточности на Java.
Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).
Это реализация однопоточного побайтового копировальщика из InputStream в OutputStream. Копирование происходит в потоке вызвавшем метод copy(...)
Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).
Условия
Это реализация однопоточного побайтового копировальщика из InputStream в OutputStream. Копирование происходит в потоке вызвавшем метод copy(...)
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class CopyUtil {
public static void copy(InputStream src, OutputStream dst)throws IOException{
try (InputStream src0 = src; OutputStream dst0 = dst) {
int b;
while ((b = src.read()) != -1) {
dst.write(b);
}
}
}
}
+4
Новый класс Optional в Java 8, не панацея от NullPointerException
4 min
151KTutorial
В релизе Java 8 появился новый класс
С
А что если вообще запретить назначать тем или иным полям класса значения равные
Итак, приступим к описанию основных возможностей этого нововведения.
Optional
призванный помочь разработчикам в обработке NullPointerException
.С
NullPointerException
встречались многие и во многих случаях, это очень неприятное исключение заставляет дебажить код, дабы понять, в каком месте, кто-то из твоих предшественников(а возможно и ты), не поставили пресловутую проверку на null
. А что если вообще запретить назначать тем или иным полям класса значения равные
null
? Java естественно не запрещает нам делать этого, но с Optional
это становится немного удобнее и нагляднее.Итак, приступим к описанию основных возможностей этого нововведения.
+25
Программирование-по-Контракту в Java
31 min
52KTutorial
Добрый день.
В рамках детальной проработки курса удаленного образования «Java Core» я пишу серию публикаций и делаю несколько переводов наиболее популярных статей.
Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).
Сейчас я предлагаю Вам на рассмотрение мой перевод «Programming With Assertions» с некоторыми комментариями.
Оригинальная публикация не только детально объясняет варианты использования ключевого слова assert в Java и то, как реализована поддержка данного механизма на уровне загрузки классов, но также является достаточно неформальным введением в Разработку-по-Контракту (Design-by-Contract).
P.S. Автор признает, что для него лично русский язык намного сложнее языка Java, с благодарностью выслушает в личку о всех замеченных ошибках и постарается их в кратчайшие сроки исправить.
Программирование с утверждениями (oracle.com: Programming With Assertions)
Утверждение (assert) — это оператор (statement) языка программирования Java, который позволяет вам проверить свои предположения о программе. Например, если вы пишете метод, вычисляющий скорость частицы, можно «утверждать», что расчетная скорость меньше скорости света.
Каждое утверждение содержит логическое выражение, которое, по вашему мнению, будет верным в момент выполнения. В противном случае, система выбросит исключение. Проверяя, что логическое выражение на самом деле верно, утверждение (assert) подтверждает ваши предположения (ожидания) о поведении программы, увеличивая уверенность в том, что программа не содержит ошибок.
В рамках детальной проработки курса удаленного образования «Java Core» я пишу серию публикаций и делаю несколько переводов наиболее популярных статей.
Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).
Сейчас я предлагаю Вам на рассмотрение мой перевод «Programming With Assertions» с некоторыми комментариями.
Оригинальная публикация не только детально объясняет варианты использования ключевого слова assert в Java и то, как реализована поддержка данного механизма на уровне загрузки классов, но также является достаточно неформальным введением в Разработку-по-Контракту (Design-by-Contract).
Другие статьи и переводы по курсу Java Core
Другие статьи и переводы по курсу Multicore Java programming
P.S. Автор признает, что для него лично русский язык намного сложнее языка Java, с благодарностью выслушает в личку о всех замеченных ошибках и постарается их в кратчайшие сроки исправить.
Программирование с утверждениями (oracle.com: Programming With Assertions)
Утверждение (assert) — это оператор (statement) языка программирования Java, который позволяет вам проверить свои предположения о программе. Например, если вы пишете метод, вычисляющий скорость частицы, можно «утверждать», что расчетная скорость меньше скорости света.
Каждое утверждение содержит логическое выражение, которое, по вашему мнению, будет верным в момент выполнения. В противном случае, система выбросит исключение. Проверяя, что логическое выражение на самом деле верно, утверждение (assert) подтверждает ваши предположения (ожидания) о поведении программы, увеличивая уверенность в том, что программа не содержит ошибок.
+20
J-сортировка
7 min
88KПирамидальная сортировка (она же сортировка кучей) – классический алгоритм который, пожалуй, должен знать любой программист. Старая добрая «пирамидка» примечательна тем, что в независимости от набора данных у неё одна и та же сложность по времени (причём, очень пристойная) – O(n log n). Лучших и вырожденных случаев для неё нет.
С момента изобретения метода (а в этом году алгоритм празднует свой полувековой юбилей) было немало охочих кардинально оптимизировать процесс накладывания сортирующих куч. Тернарная пирамидальная сортировка, плавная сортировка, сортировка декартовым деревом – вот неполный список инноваций. Перечисленные алгоритмы хотя при тестировании и опережают оригинал по абсолютной скорости кто на 12, а кто и на 25%, в оценке временной сложности всё равно крутятся вокруг O(n log n). При этом данные методы весьма изощрённо реализованы.
Своё видение пирамидальной сортировки предложил и скромный труженик Университета Манитобы Джейсон Моррисон. При этом способ в некоторых случаях по скорости приближается к O(n).
+49
Паттерны для новичков: MVC vs MVP vs MVVM
6 min
799KДобрый день, уважаемые коллеги. В этой статье я бы хотел рассказать о своем аналитическом понимании различий паттернов MVC, MVP и MVVM. Написать эту статью меня побудило желание разобраться в современных подходах при разработке крупного программного обеспечения и соответствующих архитектурных особенностях. На текущем этапе своей карьерной лестницы я не являюсь непосредственным разработчиком, поэтому статья может содержать ошибки, неточности и недопонимание. Заинтригованы, как аналитики видят, что делают программисты и архитекторы? Тогда добро пожаловать под кат.
+35
Пишем виртуальный буфер обмена на C#
16 min
34K Очень много приходится работать с текстовыми данными, такими как код, статьи, посты и т.д. В то время когда жил под Linux — пользовался менеджерами истории буфера обмена, которые запоминали, то что попадало в виде текста в буфер и по клику в трее я мог вернуть нужное значение в буфер, не возвращаясь к источнику.
Недавно пришлось большую часть времени проводить в Windows, удовлетворяющей альтернативы для такого простого приложения я не нашел. Что-то в найденных вариантах не устраивало: не свободное ПО, много ненужного функционала (который просто мешал) или работали неудобно для меня (например: получить предыдущее значение буфера, приходилось открывать окно программы). Недолго думая решил сделать, так как мне хотелось.
Поскольку, приложение должно работать исключительно в Windows, было принято решение написать ее на C# — к тому же, никогда ранее на нем ничего не писал — появился повод попробовать.
Недавно пришлось большую часть времени проводить в Windows, удовлетворяющей альтернативы для такого простого приложения я не нашел. Что-то в найденных вариантах не устраивало: не свободное ПО, много ненужного функционала (который просто мешал) или работали неудобно для меня (например: получить предыдущее значение буфера, приходилось открывать окно программы). Недолго думая решил сделать, так как мне хотелось.
Поскольку, приложение должно работать исключительно в Windows, было принято решение написать ее на C# — к тому же, никогда ранее на нем ничего не писал — появился повод попробовать.
Задача
- Программа должна слушать и запоминать изменения в текстовом буфере обмена.
- Через контекстное меню в трее или через окно программы по клику на выбранном элементе истории, нужное значение должно автоматически попадать назад в буфер.
- История не должна пропадать после перезагрузки системы
+29
Десять возможностей C++11, которые должен использовать каждый C++ разработчик
12 min
537KВ данной статье рассматривается ряд возможностей С++11, которые все разработчики должны знать и использовать. Существует много новых дополнений к языку и стандартной библиотеке, эта статья лишь поверхностно охватывает часть из них. Однако, я полагаю, что некоторые из этих новых функций должны стать обыденными для всех разработчиков С++. Подобных статей наверное существует много, в этой я предприму попытку составить список возможностей, которые должны войти в повседневное использование.
Сегодня в программе:
Сегодня в программе:
auto
nullptr
- range-based циклы
override
иfinal
- строго-типизированный
enum
- интеллектуальные указатели
- лямбды
- non-member
begin()
иend()
static_assert
и классы свойств- семантика перемещения
+117
Пишем эмулятор Кубика Рубика
20 min
77KOpenGL — платформонезависимая спецификация, описывающая программный интерфейс для создания компьютерных приложений, использующих двухмерную и трехмерную графику.
В этой статье я опишу, как можно создать эмулятор Кубика Рубика на OpenGL.
Кубик будет в 3D и его можно будет вращать мышкой, а переворачивать грани можно, кликая мышкой по стрелкам. При том стрелки появляются у ближайшей к зрителю грани.
В этой статье я опишу, как можно создать эмулятор Кубика Рубика на OpenGL.
Кубик будет в 3D и его можно будет вращать мышкой, а переворачивать грани можно, кликая мышкой по стрелкам. При том стрелки появляются у ближайшей к зрителю грани.
+41
Несколько вопросов по .NET и C# (ответы с разбором)
4 min
133KНа минувших выходных я запустил пост «Несколько вопросов по .NET и C#»
Я думаю многим интересно не только найти правильные ответы, но и узнать какая часть пользователей знает эти правильные ответы. Именно с этой целью и создавался этот пост.
Я не настаиваю на истинности объяснений в последней инстанции, поэтому конструктивная критика, дополнения и уточнения приветствуются.
Обещанные ответы с разбором под катом.
Я думаю многим интересно не только найти правильные ответы, но и узнать какая часть пользователей знает эти правильные ответы. Именно с этой целью и создавался этот пост.
Я не настаиваю на истинности объяснений в последней инстанции, поэтому конструктивная критика, дополнения и уточнения приветствуются.
Обещанные ответы с разбором под катом.
+36
Несколько вопросов по .NET и C#
1 min
58KЯ думаю многие из вас захотят проверить свои знания по C# и .NET
Под катом вы найдете интересные вопросы, представленные в виде голосования.
Проведем исследование: насколько хорошо хабраюзеры знают платформу .NET и C#?
UPG Прием ответов завершен 12 марта 2013 в 21:00.
Ответы с разбором
Прошу под кат.
Под катом вы найдете интересные вопросы, представленные в виде голосования.
Проведем исследование: насколько хорошо хабраюзеры знают платформу .NET и C#?
UPG Прием ответов завершен 12 марта 2013 в 21:00.
Ответы с разбором
Прошу под кат.
+24
5 секретов хорошего интерфейса. Личный опыт
18 min
32KПоследние несколько лет я плотно занимаюсь разработкой интерфейсов для разнообразнейших устройств – от банальных смартфонов и планшетов, до приложений под smartTV и некоторых эзотерических устройств вроде приставок для трансляции музыки через телевизор.
Признаюсь честно – я плохой теоретик. Кажется, я, так и не осилил до конца ни одной книги по разработке или дизайну интерфейса и практически не читаю блогов популярных евангелистов от юзабилити. Но, возможно, для вас в этом есть и положительная сторона – у меня сформировался свой набор правил, которыми я пользуюсь для создания интерфейса.
Под катом вы найдете длинный текст, два совета и три методики, щедро приправленный примерами из личного опыта, в котором я постарался по шагам расписать процесс о создания хороших, интуитивных приложений и сайтов, и который затрагивает, конечно, много около-интерфейсных решений.
Один из упоминаемых в статье интерфейсов
Признаюсь честно – я плохой теоретик. Кажется, я, так и не осилил до конца ни одной книги по разработке или дизайну интерфейса и практически не читаю блогов популярных евангелистов от юзабилити. Но, возможно, для вас в этом есть и положительная сторона – у меня сформировался свой набор правил, которыми я пользуюсь для создания интерфейса.
Под катом вы найдете длинный текст, два совета и три методики, щедро приправленный примерами из личного опыта, в котором я постарался по шагам расписать процесс о создания хороших, интуитивных приложений и сайтов, и который затрагивает, конечно, много около-интерфейсных решений.
+114
Information
- Rating
- Does not participate
- Location
- Санкт-Петербург, Санкт-Петербург и область, Россия
- Date of birth
- Registered
- Activity