С WebOS вообще получилось весьма странно. HP объявило, что они прекращают продажи планшетов и устроили распродажу уже произведенных единиц по бросовым ценам. В результате планшеты разошлись, как горячие пирожки, и сегодня именно TouchPad — второй после iPad в США по числу пользователей, обогнав и Xoom, и Playbook, и Samsung Tab. Теперь все эти люди — довольно лакомый кусочек рынка. В результате HP спешно стал проводить небольшие встречи и конференции для разработчиков приложений под WebOS, а будущее платформы внутри компании вновь под вопросом — поговаривают, что закапывать Palm равновато.
У меня самого нет мнения на этот счет. Я ума не приложу, как Palm умудрились сделать такую классную систему, но при этом не выпустили ни одного внятного устройства. Pre хорош, но уж больно хлипкий и ненадежный. Был бы пусть на $20 дороже, но зато крепкий и ладно скроен-крепко сшит.
Мы для проекта сейчас используем обычный спредшит: один лист — бэклог, второй — баглист. В дополнение к нему подключили trello.com но он играет чисто визуальную роль — там отслеживаем текущее состояние. Но у нас команда маленькая — хватает.
Особенно бросилось в глаза обилие бесплатных приложений в Android Market по сравнению с остальными платформами. Я понимаю, что не у всех есть Маки (iOS), или что немногие могут программировать на C++ (Symbian), но не думал, что это даст Андроиду настолько большую фору.
У меня мнение противоречивое. Пол Айриш уже давно представляет в работе различных групп стандартизации своего работодателя — компанию Google. Причем в отличие от многих других представителей у Айриша позиция по стандартам очень своеобразная: правильно все то, что делает Chrome.
Например, когда в Mozilla обнаружили, что WebSockets в текущем виде небезопасны и отключили их в своем браузере, Айриш критиковал их решение, причем звучало это с его уст примерно так: «А что? В Хроме уже давно работает, никто не жалуется — значит все ок, и Мозилла сакс.»
Вообще за время наблюдения за ним у меня сложилось впечатление, что есть всего два браузера: Chrome и Firefox. Про Safari, Opera или IE они и слышать не желает. По поводу IE9 и его агрессивного движения в сторону стандартизации парень просто пожал плечами, мол, все равно Chrome совсем скоро захватит мир. Если Опера в очередной раз что-то делает первой, а Гугл повторяет за ней через год-полтора, Айриш невозмутимо будет рассказывать со сцены о том, что-де вот она — очередная революция от Google — ни у кого до этого даже мысли не мого закрасться о том, что эта фича может понадобиться. Яркий пример — remote debugging.
В общем, парень не то, чтобы плохой, но очень своеобразный.
Яхуда? Яхуда — очень и очень продуктивный кодер, пишет и на JavaScript, и на Ruby. Соответственно, мир его тоже во многом ограничивается этими технологиями. Он работает в SproutCore — пишет RIA-библиотеку на JavaScript, которая работает без проблем в полутора браузерах. По-моему, это о чем-то говорит.
Вообще в команде jQuery есть один человек, который понимает, что значит для интернета кроссбраузерность — это Джон Резиг. Это с его подачи jQuery Mobile поддерживает 10-12 мобильных браузеров, — остальные были бы рады ограничиться только iOS и Android. Но он отошел от дел — jQuery как проект несколько потерял для него интерес, и сегодня Джон выполняет в основном представительскую функцию и имеет право вето на любое решение. Ясное дело, на то, чтобы заседать в комитетах, у него времени и желания нет.
Странное представление у наших людей о переводе. Марк Закерберг родился и живет в США и сам свою фамилию произносит именно так. Тем не менее все русскоязычные источники упорно переводят его фамилию как Цукерберг.
Теперь вот и Яхуда — который сам себя тоже так называет — оказался у нас Иудой. Что интересно при этом, Пол Айриш остался Полом, не превратившись в Павлика. Интересно, чем это он так выделился в глазах Mithgol'а?
Эх, испортили метро в Петербурге. Раньше до введения новой станции в центре с любой ветки можно было пересесть на любую другую. Т.е. куда бы ты не ехал, делать нужно было максимум одну пересадку. А теперь ерунда какая-то. О чем они думали, когда проектировали такое соединение, ума не приложу. Неужели опыт столичного метро их ничему не научил?!
Стив Балмер в сове время в одним интервью говорил, что с точки зрения разработчика гораздо интереснее попасть в Bing, чем в Google. Что толку в том, что из-за вашей работы доля поисковика вырастит с 67 до 69 процентов? Не интереснее ли попытаться победить в борьбе с лидером.
Мне Bing нравится, но есть два недостатка:
1. Просто ужасно ищет на IT-тематику. Найти документацию по какому-то API гораздо легче через Google.
2. Поиск совершенно не глобализирован. Если от Гугла приходится добиваться, чтобы он не искал по Рунету, а искал по общему интернету, то у Бинга проблема другая — очень трудно заставить искать его за пределами США.
Да-да, драгэндропом. Правда, сдавал я тест по Java 1.5 — давно это было. Спрашивали в основном новенькое на тот момент — на дженерики было около половины вопросов.
Тоже сдал, когда был студентом — просто, чтобы самому себе доказать, что я Java знаю. Причем сдавал под Новый год и попал под скидку 50% :)
Больше всего мне понравились задачи, где нужно было перетаскивать фрагменты кода, чтобы получить желаемый результат. Довольно много было задач на wildcards, annotations и threading. Времени, которого дают, хватает с лихвой — я по всем вопросам пробежался пару раз и все равно закончил минут на 40 раньше. Балл отличный, не 100%б но где-то близко.
Самое интересное, что теперь в резюме его не указываю — вроде бы как пару лет назад считалось дурным тоном. Мол, экзамен сдают только задроты, которые программировать не умеют, а работу получить хотят. Как сейчас к сертификации относятся, не в курсе.
Аналогично. XP шел на ноуте, кторому уже шесть лет. Переставляю, используя factory reinstall. В последний раз даже Internet Explorer до восьмой версии обновить было проблематично — на сайте Микрософта под IE6 верстка едет.
Да, я бы тоже требовал письма печатными буквами — от врачей! А то этот врачебный почерк никто кроме других врачей не может разобрать. Ощущение, что их этому почерку в медучилищах и институтах учат — причем наверняка предмет в расписаниях идет под именем «Латынь» — а как иначе объяснить, что все врачи умеют писать совершенно неразборчиво, одинаково, но при этом никто латыни не знает?! Я думаю, что на занятиях латыни в течение нескольких семестров студенты изучают врачебную технику письма!
Это заговор! Я не знаю, что именно врачи скрывают от остального населения, но зачем-то им нужен свой собственный шифр. И я считаю, что мы — простые граждане — имеем право знать правду!
Только тотальный запрет на письмо прописью и введение обязательных печатных букв спасет нас от козней медицинских работников!
Все на баррикады! Требуем печатные буквы — защитим наших детей! Защитим наше будущее!
А точно одинаковый? Мне что-то казалось, что в Хроме больше возможностей. Например, event breakpoint — можно ли такое в Фаербаге сделать? Или автоформатирование скриптов во время дебага.
Зато в Фаербаге очень нравится, что он подсвечивает изменяемые элементы и атрибуты DOM.
Вообще-то не вижу проблемы с использованием Java array в качестве хранилища памяти. Используем массивы массивов для хранения мультигигабайтных данных. Функции адресации пишутся один раз, а затем работают на ура. С точки зрения GC результирующая структура гораздо проще для обработки, чем обычные объекты: ведь сложность определяется не тем, сколько объект места в памяти занимает, а тем, сколько ссылок есть внутри этого объекта.
Кто-нибудь может объяснить, чем этот подход хуже, чем тот же Unsafe-аллокатор?
А я вам говорю, что есть два вида автокомплита — и тот, который работает по токенам, на практике тоже работает весьма неплохо. Думаете, я в блокноте Ctrl+Пробелом не пользуюсь? То же самое — буква-буква-бах! буква-буква-бах! Сниплеты во всех уважающих себя редакторах тоже есть:
fu — Ctrl-Space -> function -> tab -> тело функции с курсором на параметрах.
В Java своя особая проблема — checked exceptions — когда компилятор заставляет программиста вставлять блоки обработки исключений в принудительном порядке. Сама по себе идея не такая уж и страшная, но очень уж много методов в стандартной библиотеке языка злоупотребляют ими. В результате такая простая задача, как скопировать содержимое файла в другой, превращается в огромную простыню catch-блоков, в порядке которых и уровнях их вложенности очень легко запутаться неподготовленному человеку.
1. Защита от опечаток.
2. Знакомство с API — посмотреть, что умеет тот или иной объект.
Для первой задачи в целом может хватать простого поиска токенов по файлу, или по файлам проекта. Причем, такой автокомплит есть даже в обычных текстовых редакторах вроде Notepad++ или SublimeText. Работает на ура и в случае с JavaScript позволяет избавляться от TypeError-ошибок. По своему опыту могу сказать, что без автодополнения риск опечататься выше, а дебаг таких ошибок бывает нетривиальным. Но с другой стороны, простое деревянное автодополнение по токенам хватает за глаза.
Что дает IDE, так это именно семантическую контекстную автоподстановку. Такая подстановка преследует и цель 1, и цель 2. Тут вы правы, даже WebStorm не отрабатывает на 100%, поэтому не всегда можно получить представление о возможностях того или иного объекта. С другой стороны, это дело наживное — со временем часто используемые вызовы запоминаются. Тут особенно важное значение имеет наличие документации или каких-то других источников, из которых я смог бы узнать о свойствах и методах объекта.
На опыте своего проекта, который уже перевалил за несколько тысяч строк своего кода и тянет за собой с десяток внешних библиотек, могу сказать, что как и во многом другом, здесь работает правило 20/80. 80% эффекта можно добиться с помощью простой автоподстановки по токенам. Также со временем этот процент растет, т.к. разработчик постепенно знакомится с предоставленным ему API. Так что тут не все так плохо, как вам кажется.
Рефакторинг, да, совершенно не автоматизирован — все, что можно получить автоматически — это простое переименование. Что-то посерьезнее, вроде переноса методов из одного скоупа в другой или смена сигнатуры вызова, приходится делать руками. Не могу сказать, что это так уж сложно.
Начнем с того, что Java — не самый удобный язык для рефакторинга. Банальный пример: чтобы переименовать класс, требуется изменить имя файла, а также пробежаться по всем местам, где используется этот класс. Такой сценарий напрочь в JavaScript отсутствует — нет классов и нет строгой привязки компонентов к файлам. Переименование методов и полей достигается через Find/Replace. Что-то посерьезнее требует такой же механической работы.
С одной стороны — жутко неудобно, а с другой — дисциплинирует. На Java я могу немного покопипастить и решить, что пока можно оставить и так. Затем я что-то рефакторю и IDE автоматически применяет изменения ко всем копиям фрагмента кода. В Джаваскрипте же мне придется делать это руками, поэтому я почем зря копипастить не буду — мне же потом лишнюю работу делать. У нас на клиентской стороне код никогда не повторяется — чуть что-то одинаковое — сразу выносим в отдельные функции или объекты.
У меня самого нет мнения на этот счет. Я ума не приложу, как Palm умудрились сделать такую классную систему, но при этом не выпустили ни одного внятного устройства. Pre хорош, но уж больно хлипкий и ненадежный. Был бы пусть на $20 дороже, но зато крепкий и ладно скроен-крепко сшит.
Мы для проекта сейчас используем обычный спредшит: один лист — бэклог, второй — баглист. В дополнение к нему подключили trello.com но он играет чисто визуальную роль — там отслеживаем текущее состояние. Но у нас команда маленькая — хватает.
Например, когда в Mozilla обнаружили, что WebSockets в текущем виде небезопасны и отключили их в своем браузере, Айриш критиковал их решение, причем звучало это с его уст примерно так: «А что? В Хроме уже давно работает, никто не жалуется — значит все ок, и Мозилла сакс.»
Вообще за время наблюдения за ним у меня сложилось впечатление, что есть всего два браузера: Chrome и Firefox. Про Safari, Opera или IE они и слышать не желает. По поводу IE9 и его агрессивного движения в сторону стандартизации парень просто пожал плечами, мол, все равно Chrome совсем скоро захватит мир. Если Опера в очередной раз что-то делает первой, а Гугл повторяет за ней через год-полтора, Айриш невозмутимо будет рассказывать со сцены о том, что-де вот она — очередная революция от Google — ни у кого до этого даже мысли не мого закрасться о том, что эта фича может понадобиться. Яркий пример — remote debugging.
В общем, парень не то, чтобы плохой, но очень своеобразный.
Яхуда? Яхуда — очень и очень продуктивный кодер, пишет и на JavaScript, и на Ruby. Соответственно, мир его тоже во многом ограничивается этими технологиями. Он работает в SproutCore — пишет RIA-библиотеку на JavaScript, которая работает без проблем в полутора браузерах. По-моему, это о чем-то говорит.
Вообще в команде jQuery есть один человек, который понимает, что значит для интернета кроссбраузерность — это Джон Резиг. Это с его подачи jQuery Mobile поддерживает 10-12 мобильных браузеров, — остальные были бы рады ограничиться только iOS и Android. Но он отошел от дел — jQuery как проект несколько потерял для него интерес, и сегодня Джон выполняет в основном представительскую функцию и имеет право вето на любое решение. Ясное дело, на то, чтобы заседать в комитетах, у него времени и желания нет.
Теперь вот и Яхуда — который сам себя тоже так называет — оказался у нас Иудой. Что интересно при этом, Пол Айриш остался Полом, не превратившись в Павлика. Интересно, чем это он так выделился в глазах Mithgol'а?
Печаль.
Мне Bing нравится, но есть два недостатка:
1. Просто ужасно ищет на IT-тематику. Найти документацию по какому-то API гораздо легче через Google.
2. Поиск совершенно не глобализирован. Если от Гугла приходится добиваться, чтобы он не искал по Рунету, а искал по общему интернету, то у Бинга проблема другая — очень трудно заставить искать его за пределами США.
Поздравляю, улучшайте поисковик.
Больше всего мне понравились задачи, где нужно было перетаскивать фрагменты кода, чтобы получить желаемый результат. Довольно много было задач на wildcards, annotations и threading. Времени, которого дают, хватает с лихвой — я по всем вопросам пробежался пару раз и все равно закончил минут на 40 раньше. Балл отличный, не 100%б но где-то близко.
Самое интересное, что теперь в резюме его не указываю — вроде бы как пару лет назад считалось дурным тоном. Мол, экзамен сдают только задроты, которые программировать не умеют, а работу получить хотят. Как сейчас к сертификации относятся, не в курсе.
Зато с Chrome и Opera идут без проблем.
Это заговор! Я не знаю, что именно врачи скрывают от остального населения, но зачем-то им нужен свой собственный шифр. И я считаю, что мы — простые граждане — имеем право знать правду!
Только тотальный запрет на письмо прописью и введение обязательных печатных букв спасет нас от козней медицинских работников!
Все на баррикады! Требуем печатные буквы — защитим наших детей! Защитим наше будущее!
Зато в Фаербаге очень нравится, что он подсвечивает изменяемые элементы и атрибуты DOM.
Кто-нибудь может объяснить, чем этот подход хуже, чем тот же Unsafe-аллокатор?
fu — Ctrl-Space -> function -> tab -> тело функции с курсором на параметрах.
1. Защита от опечаток.
2. Знакомство с API — посмотреть, что умеет тот или иной объект.
Для первой задачи в целом может хватать простого поиска токенов по файлу, или по файлам проекта. Причем, такой автокомплит есть даже в обычных текстовых редакторах вроде Notepad++ или SublimeText. Работает на ура и в случае с JavaScript позволяет избавляться от TypeError-ошибок. По своему опыту могу сказать, что без автодополнения риск опечататься выше, а дебаг таких ошибок бывает нетривиальным. Но с другой стороны, простое деревянное автодополнение по токенам хватает за глаза.
Что дает IDE, так это именно семантическую контекстную автоподстановку. Такая подстановка преследует и цель 1, и цель 2. Тут вы правы, даже WebStorm не отрабатывает на 100%, поэтому не всегда можно получить представление о возможностях того или иного объекта. С другой стороны, это дело наживное — со временем часто используемые вызовы запоминаются. Тут особенно важное значение имеет наличие документации или каких-то других источников, из которых я смог бы узнать о свойствах и методах объекта.
На опыте своего проекта, который уже перевалил за несколько тысяч строк своего кода и тянет за собой с десяток внешних библиотек, могу сказать, что как и во многом другом, здесь работает правило 20/80. 80% эффекта можно добиться с помощью простой автоподстановки по токенам. Также со временем этот процент растет, т.к. разработчик постепенно знакомится с предоставленным ему API. Так что тут не все так плохо, как вам кажется.
Рефакторинг, да, совершенно не автоматизирован — все, что можно получить автоматически — это простое переименование. Что-то посерьезнее, вроде переноса методов из одного скоупа в другой или смена сигнатуры вызова, приходится делать руками. Не могу сказать, что это так уж сложно.
Начнем с того, что Java — не самый удобный язык для рефакторинга. Банальный пример: чтобы переименовать класс, требуется изменить имя файла, а также пробежаться по всем местам, где используется этот класс. Такой сценарий напрочь в JavaScript отсутствует — нет классов и нет строгой привязки компонентов к файлам. Переименование методов и полей достигается через Find/Replace. Что-то посерьезнее требует такой же механической работы.
С одной стороны — жутко неудобно, а с другой — дисциплинирует. На Java я могу немного покопипастить и решить, что пока можно оставить и так. Затем я что-то рефакторю и IDE автоматически применяет изменения ко всем копиям фрагмента кода. В Джаваскрипте же мне придется делать это руками, поэтому я почем зря копипастить не буду — мне же потом лишнюю работу делать. У нас на клиентской стороне код никогда не повторяется — чуть что-то одинаковое — сразу выносим в отдельные функции или объекты.