Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+3

Вопрос на засыпку: далеко не все кто работает в it работают в компаниях входящих в ПВТ, а на них эти льготы никогда и не распространялись, в итоге если компании из ПВТ своим сотрудникам сбросит -20% с зарплаты есть вероятность, что они потеряют этих сотрудников, т.к. те кто не в ПВТ как работали с зп в конверте так и будут работать, и для них ничего не меняется.

Согласен с тем, что рост зп замедлится или остановится, но вот в то что нас ожидают откаты до 20% сомневаюсь.

Если я не прав, то прошу уточнить в чём.

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+3

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

К тому же многие сейчас действительно считают, что если они занимаются А, то больше им ничего не нужно: "Зачем мне учить Б, если я не вижу где я это могу прямо сейчас применить, да и вообще зачем мне еще дополнительно что-то учить если мне хватает для выполнения работы текущих знаний"

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

Развитие бывает не только вертикальное, но и горизонтальное =)

Хорошая перевод статья была на хабре: http://habrahabr.ru/post/137746/ 37signals: почему в нашей компании нет менеджеров

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+2

Добавлю свои 5 копеек в отношении Java:

1. битовые карты - начиная с 7й явы была оптимизирована их работа, чтобы не попадать на false sharing, и теперь write barrier не всегда устанавливаются бездумно, а сразу проверяется установлен уже флаг или нет, если уже установлен, то лишний раз не пинаем его ( -XX:+UseCondCardMar, принцип set заменяется на test-and-set). По тестам на часто изменяемых объектах скорость работы подымается в разы

2. write barrier - отдельно стоит указать, что есть такие вирт машины для java как Azul, у них присутсвуют еще и read barrier, что позволяет обходить весь heap без StopTheWorld, используется в банковских платформах для которых критично время отклика и даже малые остановки недопустимы

3. для снижения нагрузки на gc используются техники reuse object если нужно обновить какой-либо объект в кеше, плодится меньше новых объектов, а следовательно и сборщику меньше работы

4. новый сборщик G1, который разбивает память на регионы и при заполнении его проходит не всю память, а только отдельную ее часть, хотя от STW не спасает, но может заметно отодвинуть его наступление

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

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

б) почистили память, дефрагментировали ее, вернулись к работе - есть риск что на большом кеше перемещение объектов в памяти будет достаточно долгим, так как пропускная способность к памяти тоже не резиновая

6. начали мы использовать off-heap кэш (без разницы это ByteByffer или через jni как дергаем), вроде все хорошо, gc спокоен, но встает вопрос по сериализации и десериализации объекта, в итоге может оказаться что из-за кривого алгоритма упираемся в cpu

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

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

Конечно перемещения тоже в off-heap присутсвует, но уже управляется непосредственно алгоритмом кеша, а не сборщиком, который зачастую может не знать о некоторых нюансах хранящихся объектов в памяти.

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

Осталось добавить: достаточно редко при грамотной настройке сборщика мусора.

В дотнете мы не можем управлять размерами поколений (по крайней мере когда я интересовался этой темой я не нашел, но так как я не специализируюсь в нем, то может и ошибаюсь), сборщик автоматически пытается подстраивать размер на основании статистики, но вот в яве несколько раз сталкивался с тем, что eden достаточно большой, а Survivor малого размера, в итоге почти сразу с eden'а начинается переливание в "старики" при высокой нагрузке на создание объектов во многих потоках под нагрузкой. Последние версии явы уже по дефолту создают объекты прямо на стеке (-XX:+DoEscapeAnalysis), если могут определить, что дальше функции объекты не уйдут, там их убивать вообще элементарно, не нужен даже minor gc, но хватает больших объектов уходящих сразу в хип. Проблему быстрого перетекания конечно можно решить потюнив немного пропорции областей, чтобы объекты успели уже окончательно отработать и дальше Survivor не вышли, но мы насколько понимаю говорим про условно "начинающих" разработчиков и возможные грабли.

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

Off-heap мне в этом плане намного больше нравится, хотя как уже и говорил, и они не без недостатков.

p.s. всегда было интересно, можно ли в .net задать максимальный размер памяти для использования приложением, как в java, вопрос интересует с точки зрения: как можно обезопасить свое приложение от провала в своп. Сугубо спортивный интерес.

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

=) давно вы видели продакшен однопоточный или на однопроцессорных системах?

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

Оптимизация хоть и введена в 7ю java, но на данный момент выключена по дефолту.

А вообще данная проблема относится не только к яве, а вообще к любым системам, так как это уже нюансы железа, а насколько все бывает печально, можно глянуть по ссылкам:

http://mechanical-sympathy.blogspot.com/2011/07/false-sharing.html

http://cpp-today.blogspot.com/2008/05/false-sharing-hits-again.html

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+3

Частично с вами согласен, хоть и пишу на java =)

1. из управления ресурсов: за mmap-леный файл в память вручную освободить в Java нельзя, только изврат с Unsafe

2. да, java разрабатывалась как более простая версия си/с++, но лишь из-за того, что программистов нужно много и на разные задачи (я знаю про переносимость между платформами, но это всего-лишь еще одна причина упрощения), и тут 2 пути:

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

б) строить универы и долбить-долбить профессоров на выход которые могут рассказать как работает система начиная от регистров и заканчивая высокоуровневыми паттернами

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

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

Но вот говорить, что если ты пишешь на java, то дальше собственного носа не видишь, я считаю не правильно, программисты разные бывают.

Сайт визитку писать на си - глупо

Писать драйвера на Ruby - тоже глупо

Google написал свой mapreduce на с++ и у него он работает на порядки быстрее чем hadoop, написанный на java.

НО писали они его намного дольше и вложили на порядок больше средств, повторить этот проект теми силами что были заняты на hadoop (т.е. переписать его на плюсы) невозможно.

Написать на java большой кеш можно, но тяжело и не всегда отимально, проще взять готовый или писать на другом языке

для не очень больших задач нанимать сишника или писать off-heap кеш тоже слишком затратно

Каждому свой инструмент, и если возвращаться к молотку:

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

Си быстрее Java и проще:

http://habrahabr.ru/post/136210/

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

Вы наверное пошутили ?

В любом случае php остается интерпретируемым, в лучшем случае кешируются опкоды, но вот до jit компиляции ему как до луны.

Или думаете от нечего делать facebook свой hip-hop vm придумывал ?

В качестве ответа человеку про сравнение nginx и java:

http://timyang.net/programming/c-erlang-java-performance/

netty очень близка к nginx.

Сравнивать jboss и nginx мягко говоря некорректно, вы же не сравниваете боллид формулы 1 и эксковатор кто быстрее проедет участок. Никогда не видел сложной логики на nginx, так же как и отдачу статики на jboss, но вот балансер nginx за которым несколько jboss обрабатывающих stateless запросы неоднакратно.

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+1

1. какие типы профайлеров по методу работы вы знаете ? (в общем случае их 2)

2. на сбор уходит настолько малый процент этого времени от общего времени выполнения, что можно пренебречь

3. после скольких вызовов методов сработает jit можно управлять параметрами запуска, а jrockit вообще на первом запуске уже сразу запускает jit

4. по поводу тестов вы на удивление правы, так как jvm это адаптивная виртуальная машина и она подстраивается под тип нагрузки, именно поэтому кривые тесты могут как улучшить так и ухудшить показатели.

Пример:

а) запускаем машину, прогреваем разнородными данными, даем нагрузку данными из набора А, замеряем, даем нагрузку данными из набора Б, замеряем --- А в разы быстрее Б

б) делаем этот же тест, но сразу даем набор Б, а потом набор А -- Б в разы быстрее А

Мистика, если не знать про внутреннюю подстройку.

5. да в c++ можно вручную управлять инлайнингом не полагаясь только на компилятор, в java что инлайнить а что нет нерает jit, можно управлять лишь максимальной глубиной и максимальным размером инлайн блока. На практике же все гетеры инлайняться и блоки небольшого размера, в итоге вызов вложенных m1 m2 m3 m4... mN в которых полезное делает только mN а остальные всего-лишь проксируют вызов равен прямому вызову mN.

6. "нестандартный" ака кривой код одинакого плохо будет оптимизирован что в c++, что в java, jit просто переведет его на асм и ничего не сделает, точно также как и с++. JIT не панацея и никогда не говорилось, что он спасет неоптимально написанный алгоритм, он никогда не меняет логику работы, только задействует asm и расширения mmx, sse и тд, при необходимости производит перестоновку блоков кода, если определяет что логику они не меняют, укрупняет блокировки если время внутри блокировок меньше времени их взятия.

Код:

sync {

i++;

}

a++;

sync {

i++;

}

будут одинаково медленнее на любом языке программирования (java, c++, c#), чем :

sync {

i++;

a++;

i++;

}

так как взятие блокировки это достаточно долгая операция с необходимостью переключать контекст на уровень ядра и обратно.

7. Выделение памяти под новый объект через new в с++ проходит из общей кучи, в java он может выделиться прямо на стеке если jit знает что дальше этот объект (с учетом всех инлайнов) не выходит за пределы функции. Да я знаю про различные стратегии выделения памяти и malloc это простейший вариант, но то что в java скрыто, в плюсах приходится писать руками.

По поводу с++: набор доступных инструкций и расширений процессора определяется в момент компиляции программы и для того чтобы работало везде, зачастую ставят самую древнюю из всего зоопарка оборудования, но в Java JIT определяет эти расширения в момент срабатывания и поэтому ничто не мешает ему использовать весь доступный набор sse и тд для оптимизаций, он точно знает что они на проце есть.

Не понял по поводу рюкзака с кирпичами, никто ведь не дает доп нагрузку на jvm. Это можно рассматривать - стоим в сторонке, делаем фото и снимаем по wireless метрики дыхания-сердцебиения, обрабатываем и через каждый 10км говорим о необходимости ускориться-замедлиться-поменять тип дыхания.

В мире много задач и поэтому много инструментов для их решения, пытаться занять нишу java проталкивая c++ невозможно, так же как невозможно полностью вытеснить c++ с помощью java. Но вот пытаться доказывать ущербностью противоположного инструмента хорошо не ознакомившись с ним, глупо вдвойне, а вы как вижу имеете достаточно смутные представления о JVM и JIT (не знаю, но осуждаю, так как видел куски говнокода там-то и там-то)

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+2

Честно сказать, вы первый кто подтолкнул погуглить этот вопрос по PHP/Java Bridge.

Исходя из метода работы быстрее наврятли будет, так как томкат выступает в роли бриджа и проксирует запросы, лишняя сериализация-десереализация на пользу никогда не идет. Используется для интеграции уже существующего кода на php с новым на java, вот только на практике я ни разу не видел такой связки. Если вам знакомы такие решения я бы с удовольствием послушал.

Фраза

<< Вы проверяли, как бытро Apache отображает JSP-страницы, или как Tomcat/Jetty/JBoss обрабатывает PHP-скрипты>>

была сказана как сарказм, для указания что apache+php относится к другой весовой категории чем Tomcat/Jetty/JBoss+jsp, так как jsp это всего лишь одна и далеко не самая нужная вещь требуемая от них, и сравнивать как минимум не корректно. К тому же есть подозрение, что человек хотел указать что апач не умеет jsp, а tomcat - php.

В качестве ответа на фразу: В чем преимущество JSP/Tomcat/Jetty/JBoss перед стандартной, хорошо всеми изученной и применяемой на любом обычном хостинге связкой Apache+nginx+PHP.

Когда нужна быстрая обработка (nginx + cgi) - netty, писать сильно сложную логику там тоже можно, но местами сложно, сетевая подсистема работает по принципу конечного автомата (так же как и nginx, тот же epoll), в этой роли nginx + cgi (php) окажутся в проигрыше, так как nginx на статике работает не намного шустрее netty, а уже если к нему еще и cgi скрипты на php прикручивать, то тут netty точно вырвется вперед.

Когда нужна сложная логика (apache + mod_что_угодно) - тут уже выходит Tomcat/Jetty/JBoss которые предоставляют даже более продвинутые интрументы, тут зависит от сложности, но в любом случае тоже будет быстрее чем apache + php.

По поводу "стандартной, хорошо всеми изученной и применяемой на любом обычном хостинге": уже ответил про эксковатор =) продукты немного разного профиля + разной ценовой категории, никто не будет нанимать java программиста для создания homepage, также мало кто будет писать сложную систему со сложной логикой на php (под сложными я подразумеваю системы когда у нас отображение информации это менее 5% от всей сложности, когда же в фоне она процессит данные непрерывно, проводит агрегацию, а на выходе лишь периодически пару страниц с выжимкой, а может и вообще ответ в виде xml с веб сервиса, то на пыхе приходится извращаться с cron, нативными либами для многопоточности и тд).

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

java: все вплоть да шедулера идут вметсе с сервером приложений. Задача на час максимум.

php: пытаемся разруливать периодическую затяжку дерганьем скрипта по крону, после этого прикручиваем логику для исключения двойного запуска скрипты и тд. Либо уже сразу тянем фреймворк пожирнее.

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

Ниша php еще присутвует, хотя с появлением ror она все больше сокращается.

Если сравнивать apache + php и tomcat + php, то согласен апач может и скорее всего выиграет, но это уже попахивает извращениями =)

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

Вступлюсь за рубистов и твитер:

Они сразу попытались погонять jruby и остались довольны приростом, но кардинально проблему это не решало, стоял вопрос о полной смене архитектуры.

Вот тут они и выбрали scala.

Так что говорить о снятии проблем с нагрузкой после простого переписывания на скалу не верно =) а то многие считают что теже алгоритмы переписали на scala и все взлетело =)

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

совершенно верно

фронт остался на руби

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+2

Ну зачем сразу так драматизировать =)

Выдержка из решения жюри присяжных:

1-A) Если учесть что API могут быть закопирайчены (решение об этом отдельное судопроизводство и еще не принято), нарушил ли Гугл копирайт на 37 JAVA API package — ДА.

1-B) Если 1а ДА, то являлось ли нарушение копирайта «fair use» — решение не принято.

то есть даже если и окажется, что API может быть закопирайчено (тут конечно все еще очень мутно, но слишком много проблем будет если скажут что ДА, именно поэтому решение по API идет отдельным процессом), то остается еще шанс на признание этого нарушения "fair use", а с учетом пункта 4, то вообще веселье и шансы Оракла тают.

Кстати, европа на днях признала что "API, языки программирования и поведение программ не могут быть интеллектуальной собственностью" http://www.opennet.ru/opennews/art.shtml?num=33762

2-A) Был ли нарушен копирайт на документацию к этим 37 JAVA API package — НЕТ.

2-B) Вторая часть вопроса игнорируется, так как 2-A — НЕТ.

3) Доказано ли, что Google взял код из:

3-A) Функции rangeCheck — ДА.

3-B) Код в 7 файлах «Impl.java» и в одном «ACL» файле — НЕТ.

3-C) Комментарии в коде на английском языке в некоторых файлах — НЕТ.

(Эта часть требует пояснения, изначально Oracle предъявлял претензии на ~100к строк кода, но в суде рассматривались лишь некоторая часть.)

4-A) Доказал ли Гугл, что Сан/Оракл знали или могли знать, что некоторые их действия дали понять Гуглу, что лицензирование не требуется — ДА.

4-B) Доказал ли Гугл, что он на самом деле действовал на основании этих действий Сана/Оракла в принятии решении о использовании копирайтных материалов без лицензии — НЕТ.

Если бы это была победа Оракла, то не было бы: "Вот почему после того, как присяжные ушли, за столом Гугла был смех, а настроение оракловцев было тяжелым и угрюмым."

Так что запасаемся попкорном и продложаем смотреть.

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+1

это не защитит,

англия и штаты - прецендентное - Англосаксонская правовая семья http://ru.wikipedia.org/wiki/%D0%90%D0%BD%D0%B3%D0%BB%D0%BE%D1%81%D0%B0%D0%BA%D1%81%D0%BE%D0%BD%D1%81%D0%BA%D0%B0%D1%8F_%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D0%B2%D0%B0%D1%8F_%D1%81%D0%B5%D0%BC%D1%8C%D1%8F

остальная европа и россия - не прецендентное - Романо-германская правовая семья - http://ru.wikipedia.org/wiki/%D0%A0%D0%BE%D0%BC%D0%B0%D0%BD%D0%BE-%D0%B3%D0%B5%D1%80%D0%BC%D0%B0%D0%BD%D1%81%D0%BA%D0%B0%D1%8F_%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D0%B2%D0%B0%D1%8F_%D1%81%D0%B5%D0%BC%D1%8C%D1%8F

хотя последующие суды и рассматривают решения предыдущих, но вот ссылаться как в США на эти решения они не могут, так что это еще не полная защита

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+3

"Из наших универов хорошим специалистом можно выйти не благодаря системе образования, а вопреки ей"

не помню на каком форуме встретил, но уж очень хорошо она описывает ситуацию в которой учился сам

были и хорошие преподаватели, но их единицы

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+3

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

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

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

>> в одну из компаний без проблем распределили студента с ФиТУ, а вот ФКСиС не смог удовлетворить заявку этой же компании на своего студента

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

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

Ага, расскажи мне чему можно научиться на распределении, когда ты в лучшем случае занимаешься настройкой сети в госструктуре на 2 недосервера и 10 компов? И этот вариант еще далеко не самый плохой, бывает что в штате программист-админ только и занимается, что заправляет катриджи. Я могу ответить: если не найти работы по совместительству или фриланса, то НИЧЕМУ!, убитые 2 года жизни и общая деградация.

>> К тому же, по европейским меркам, бесплатно получить образование с вероятностью 55 % найти хорошую работу в частной компании сразу после университета – это уже неплохо

Ну давайте уже не будем говорить про бесплатное образование и про якобы хороший расклад у нас в РБ, так как:

1. все это образование уже оплатили наши родители в виде налогов

2. получая зп в 1 млн на госе, это - 34% от нее предприятие платит + 12% сам работник = в пределах 500к

получая 1к уе на коммерческой в пвт: 34% от средней по республике (а она у нас ого-го, отнють не 1млн) + 10% сам работник > 1млн, причем заметно больше. Вывод: налогов от распределения на гос с этого молодого специалиста меньше.

3. бесплатное образование в Европе можно получить в: Польше (с рядом условий на наличие мест и тд, у нас не лучше с этим на бюджет), Чехии, Швейцарии (EPFL - лучшая техническая школа в европе, своебразный MIT) и тд, причем без всяких отработок

Итого что имеем: государство само себя загоняет еще глубже в опу, тормозя развитие своей же талантливой молодежи, недополучает налогов, продолжает вешать лапшу про уникальность РБ с ее бесплатным образованием.

Незнаю чем руководствовался автор упрекая студентов, но видимо он в свое время проскочил нормально с распределением.

P.S. Красиво "распределение" называется - "право на гарантированное первое место работы", поэтому порадовало предложение на одном из форумов переименовать "тюремное заключение" в "право на гарантированное место жительства и питание"

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

>> Когда ЕПАМ готов допустим взять 5 выпускников, то пусть конкурсная комиссия в соответствии с законодательством и предлагает эти заявки лучшим выпускникам по списку.

Что эпам, что другие организации хотят получить УМНЫХ и ЗНАЮЩИХ специалистов, а не тех у кого красный диплом и ноль опыта.

Оценки хороши только для определения какую стипендию платить, но совсем не подходят для оценки реальных знаний, так как все кто учился в универе знают требования к посещениям лекций, красивым поддакиваниям на лабах и практиках и тд, в итоге уже работающий студент, знающий вещи не хуже преподавателя на экзамене получает "я не могу вам поставить выше 6, так как вы пропускали мои лекции".

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

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

>> Только когда вдруг идет "сбой" и толковые, увлеченные ребята, но не понявшие ещё необходимости "крутиться"

ТОЛКОВЫК и УВЛЕЧЕННЫЕ в универе не сидят, так как практики там невозможно получить. Может на других специальностях это и возможно, но в it ты либо будешь ковырять опенсорс (это хорошо и сам что-то делаю по мере сил), либо будешь сидеть за компом и гамать. Не ходя на реальные проекты ты из себя будешь представлять ноль и думаю все это понимают.

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

>> А если человеку интересно, он на энтузиазме 9-10 получал, то и на работе будет в первую очередь интересно развиваться, а не тупо деньги зарабатывать

На курсе было несколько краснодипломников, один парень и пару девушек, получали оценки в основном за то что ходили на все лекции и сидели на первых партах, согласен что не везде так, но основная масса идет таких. На преддипломной практике смотрели большими глазами когда их спрашивали про навыки работы с linux, mysql, postgresql и тд, ведь "нам в университете это совсем немного давали". Отличник отличнику рознь, но наша система не работает на то чтобы отличниками были наиболее продвинутые и развитые.

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

>> Зато "доить" компанию он будет по полной, как писал, "вертеться" они умеют

У нас уже у всех разработчиков одинаковая зп? Тарифная сетка в результате которой все джуниоры-мидлы и тд получают одинакого? Если разработчик что-то знает ему платят, не знает будет сидеть на своей зп и никто ему на стороне не будет платить больше.

Не понимаю вашего недовольства ЕПАМом: он подключается, проводит тренинги, кто хочет туда сходить получает практические знания, кто не хочет - сидит в общаге, после учебы ЕПАМ предпочитает, чтобы к нему шли проверенные люди с которыми он уже сотрудничал и которые хоть как-то проявляли свою активность.

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

Вот такой ЕПАМ плохой, хочет получить хороших специалистов, они не доходят до гос контор где в них острая нехватка.

Вопрос на засыпку:

Назовите 5 гос предприяний где возможно:

1. получить хорошее развитие как специалиста

2. не питаться в это время одними ролтонами

и если я еще могу вспомнить пару предприяний на пункт 2, то на пунк 1 или сразу 1-и-2 у меня не получается.

Что знаю:

а) белаз - п 2 - сайтик поковырять или пару несложных проектов для внутренних нужд

б) облгазы разные - п 2 - разработка несложных элементов для внутренних нужд, ничего достаточно сложного

в) банки - п 2 - разработка еще под дос, зачастую тупое набивание форм, моск вытекает быстро

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

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

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

а) госы крупные обязаны брать выпускников, так как у них тоже есть планы по набору молодых специалистов

б) госы настолько печальны, что кроме как молодняком с обязательным распределением заткнуть дыру нельзя, туда никто не пойдет, в итоге обязательное распределение на них это зарывание таланта

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

>> С другой стороны, в мире, где пластиковый Samsung Galaxy SIII продается лучше, чем iPhone 4S, у таких решений может просто не найтись поклонников.

а может дело не в корпусе, а в инфраструктуре:

1. давно в айфоне можно поставить что-то не через маркет?

2. давно в айфоне можно поставить сразу с апстора приложение больше 50 мб не используя файвай или itunes ? (да и 50 метров это уже что-то, до весны было 20)

3. может по начинке iphone 4s будет получше sgs3 ?

4. ааа, может у айфона нормальная мультизадачность есть?

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

ps пользовался продуктами apple (macbook, iphone 4s), местами удобно, местами огромный гемор перекрывающий все плюсы, причин переплачивать за бренд не вижу.

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+1

может не все, но всегда и везде было несколько маркетинговых трендов:

1. дизайн --- на вкус и цвет все фломастеры разные

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

3. гибкость --- что я могу сделать со своей трубкой, количество доступных игр, приложений, да просто удобство работы. спорить о гибкости iphone vs android бессмысленно, у первого платных приложений больше и пользователи их лучше покупают, у второго база пользователей больше и бесплатных приложений валом, сложность выхода на маркет минимальна, кастомизация прошивки с включение нужных тебе элементов для большинства аппаратов тоже не высокая. Есть несколько знакомых с sgs2, используют циан как более интересную прошивку чем стандартная.

каждый пытается вывернуть эти пункты под себя и тыкать в распространённость платформы, гибкость, дизайн

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

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

дополнительно у айфона стеклянный корпус, который достаточно хорошо бъется с появлением трещин, а у моторов будет металл, к чему параллели между ними я понять не могу

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

а по моему в данный момент iphone потиху скатывается в УГ, а не брендовую вещь

на западе это уже давно не показатель крутости, ну а у нас достаточно спуститься в метро, от айфонов уже в глазах рябит

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

про цену я вроде сказал, когда говорил

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

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

дополнительно в яве не будет Jigsaw, официально уже отменили так как не успеют к кодефризу, перенесли его на java 9

а вот акторы оказались настолько хороши, что в виде анотаций уже и в яве доступны

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+1

полностью согласен с тем, что проблема не в инструменте, а в голове.

Сходил по ссылке и посмотрел на этот язык:

1. очередная смесь обычного языка + функционального подхода

2. чтобы не заявлял разработчик, но у него пачка mutable переменных в пределах одного объекта, а значит тут или volatile переменные нужно будет ожидать с просадкой производительности при использовании во многих потоках, либо вещи типо dirty read при конкурентном доступе на write-read ( http://parasail-programming-language.blogspot.co.uk/2012/08/example-of-doubly-linked-list-in.html )

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

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+2

Более чем согласен, из того что могу добавить:

1) термин "big data" дискредитировал себя за 2012 более чем полностью

2) "Metamarkets спекулирует достоинствами своей «Data Science платформы», хотя в ее основе лежит обычный агрегатор, выполняющий продольные и поперечные срезы данных" - ну тут я бы немного поспорил: они себя позиционируют больше как компания предоставляющая сервис. Да, olap кубами уже давно никого не удивишь, но они первые кто предоставил свой продукт Druid в открытый доступ, в итоге те кто работает с аналитикой могут как использовать уже их агрегатор финансового рынка (saas своеобразный получается), так и поднять собственный кластер для своих конкретных нужд.

3) NewSQL вообще термин мутный более чем полностью, так же как и продукты которые пытаются ему подражать:

a) Impala по своей сути попытка реализации спеки Dremel опубликованной гуглом, но с вписыванием его в инфраструктуру hadoop. На данный момент неплохо себя показывает, но в первую очередь позиционируется как замена медленного Hive (а он с новым форматом ORC тоже может ускориться порядочно). Поддерживает выборки, но никак не обновление данных, обновление сугубо в теории и не скоро. Впервые слышу чтобы ее относили к newsql, от самой cloudera по крайней мере я этого не встречал.

b) NuoDB - один из ярчайших представителей NewSQL, может даже они и стали эту тему пиарить первые, на практике все не так уж и радужно. небольшая выдержка с их сайта

"Each storage node in NuoDB holds a complete copy of the data and is automatically managed by the system. NuoDB Storage Managers are key-value stores that store data on your local file system, on Amazon S3, or Hadoop HDFS. Transaction and storage nodes can be installed and run on different computers in a data center, an in-house computer network, or both."

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

c) Drawntoscale даже коментировать не хочется. Architecturally similar to Google F1, Spire makes it simple to build applications for the Big Data Era. У гугла в ее F1 обычный mvcc с одним главным и ооооочень важным уточнением: для временных меток они используют truetime со спутников (2 антены gps в разных частях датацентра чтобы избежать интерференции + атомные часы в каждый датацент на случай если антены издохнут). В остальном в f1 ничего примечательного нету.

остальные базы не смотрел, но уже на первом этапе мне термин NewSQL не понравился, у того же NoSQL и то больше было ярко выраженных граней =)

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

druid, impala проводил тестирование лично,

nuodb видел тесты,

Google Dremel и F1 курил спеки (нужно же знать на кого все так усиленно равняются)

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+3

да, забыл сказать главное:

Люди, не ведитесь на всякое маркетинговое словоблудие, думайте своей головой !!!

Если выполнять этот простой принцип, когда для задачи выбирается правильный инструмент, то всякие BigData, NoSQL, NewSQL и остальные buzzwords не будут вызывать ничего кроме улыбки, а вы будете видеть лишь продукт с набором нужных и ненужных свойств.

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

Ну всё как обычно: когда все начинали вместе пилить webkit, то крики со всех сторон о монополии одного движка и воспоминании эпохи ie6 и застой, сейчас google для себя сделали дополнительный форк, опять крики о войне браузеров.

сугубо для инфы небольшие выдержки с других ресурсов:

1. В представленном в 2008 году браузере Chrome компания Google использовала подсистему WebKit WebCore для реднеринга HTML и CSS, но вместо JavaScript-движка WebKit JavaScriptCore использовала собственный движок V8. Фактически компания Google изначально развивает в Chrome форк WebKit, так как использует в своём браузере отдельную ветку WebKit, непосредственно внося в неё собственные изменения и портируя сторонние изменения из WebKit, после чего возвращая свои улучшения в upstream. В WebKit2 появилось много новых возможностей и особенностей, которые не намерена использовать Google, но которые приходится учитывать при портировании. В итоге затрачиваемые на портирование ресурсы стали неприемлемо велики. Создание Blink снимает с Google обязательства по возврату изменений в WebKit.

2. В ближайшее время развитие Blink будет сфокусировано на улучшении внутренней архитектуры и упрощении кодовой базы. Например, планируется прекратить поддержку 7 сборочных систем и удалить около 7 тысяч файлов, включающих более 4.5 млн строк кода.

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

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+2

>> Для достойной подготовки фактически нужно изучить весь приведенный ниже материал

Что-то мне кажется, что если претендент изучит весь этот материал, то у него будет уровень выше среднего junior'а по минску и без всяких курсов.

Я конечно понимаю, что Макконел это must have, НО его действительно можно понять только поковыряв немного существующий код, а до этого он воспринимается больше как сказка.

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

ну если хотелось побольше хардкорного, то стоило сходить на

"Quantum" performance effects от Сергея Куксенко, действительно для многих это было из разряда расчлененки.

http://shipilev.net/pub/talks/j1-April2013-quantum-performance.pdf

вообще, по большому счету тем кто хотел найти что-то по Concurrency и server-side, то выбор был, и доклады были интересные. Согласен что некоторые из них являются переработкой докладов с прошлых javaone или других конференций, но по мне, то большинство было на уровне и не столь важен был сам доклад, сколько его подача и последующее общения с докладчиками по поводу своих вопросов.

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+4

Ruby имеет реализацию в JRuby и упссс оказывается, что jruby быстрее родного интерпретатора + нормальные треды и многопоточность, вместо gil и костылей. Если припрет, то можно хоть RoR запускать поверх JRuby, производительность в большинстве тестов выигрывает.

Lisp имеет реализацию в Clojure, которая тоже более чем шустрая.

JavaFX - (trollface) на флексе уже можно нормально запилить интерфейс для raspberry pi? или может быть написать многопоточное десктоп приложения не пытаясь запихнуть каждый тред в отдельный файл и ломая голову на комуникации? JavaFX поставляется сразу внутри jdk, но написанная программа может упаковываться в standalone приложение и использовать java embedded (скачаль прогу - запустил - профит, ничего устанавливать не нужно).

Java ME Embedded - почти полная унификация программного интерфейса, написанная программа запускается практически на любой железке (полноценный glassfish on raspberry pi ? пожалуйста! запуск на смарткарте с небольшим количеством памяти ? пожалуйста!!! (128 KB to 512 KB for the Java application environment) ). Альтернатива у нее только одна: писать на голом си, получить местами шустрее и чуть меньшее потребление памяти, но в довесок и геморой в виде портирования на туеву хучу различных железяк.

А никто и не пытается полностью сделать из java функциональный язык, это вам не извращенцы-разработчики c#, для которых в первую очередь стоит впихнуть пачку новых фишечек в следующий релиз, а то что после этого язык оказывается не совместимым с предыдущей версией для них нормально. В итоге приходится для каждого последующего дотнета тянуть ВСЕ предыдущие. Сами разработчики из Oracle уже давно говорят: "Если вы слышите Java, то в большинстве случаев мы имеем в виду JVM"

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+2

ну конечно "анбеливэбл", нужно же ms чем-то похвастаться

вот только весь дотнет разрабатывался с тем чтобы было как в java, но с собственными блекджеком и .....

2 поколения это конечно отжиг, но раз тролить, то уж по полной:

1) лондонская биржа смигрировала с дотнет платформы на linux и java (jvm от zing)

2) одна из крупнейших трейдинговых платформ LMAX написана на java (jvm от zing, оборачивает сотнями гигабайт данных без каких либо stop the world)

3) майкрософт закрывает свою системы распределенных вычислений Dryad (написана на шарпах, linq и пачка остального шлака) и использует написанный на java hadoop. Только не надо вспоминать еще один ресеч проект Naiad, который тоже типо пилим, но никому не покажем.

4) в области обработки и хранения данных hadoop, storm, spark, cassandra и тд все написаны на java, дотнета и близко там нету

немного низкоуровневого:

5) после jit мы получаем пачку инлайнов и тд, в .net методы компилятся по мере вызова, инлайнами там не пахнет, а значит и вызов обходится дороже

6) отсутствие тонкого тюнинга gc для своих задач в дотнет платформе, тупо хавай что дают. отсутсвие указания максимального размера под хип, мы лучше знаем когда вызвать gc и сколько памяти отдать твоему приложени, на остальное нам на____ть.

7) окуенная совместимать у дотнет между версиями, ставишь платформу N+1, будь добр поставить все версии до N включительно. Шикарный подход с установкой гига ненужного хлама.

но это все факты ... а лирика в том что

--А то что появился C#, который на поколение а то и 2 опережает Java как язык программирования - это уже приятный побочный эффект.

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

0) дотнет и писали с расчетом на новый язык, так как лицензия на java истекала (а потом ее и вообще отобрали, после того как ms попыталась запилить свою java несовместимую со стандартами)

1) лямбды - вещь хорошая и через либы + нормальная идее для сворачивания бойлерплейта уже давно есть, на уровне стандартной поставки уже давно есть

2) Async - давно все имеется, а хотите аналог Rx (одна незадача, ни один знакомый дотнетчик даже не слыхал про него, а расказывает что это такое им джавист), так RxJava к вашим услугам. ну или Finagle от твитера, тот вообще вам еще и асинхронность между машинами в сети даст прозрачную.

3) Что-то вроде Task Parralell Library - разверни подробней что ты под этим понимаешь, паралельные коллекции ? ну допустим для некоторых случаев получишь выигрыш, в других на синхронизации по памяти просядешь так что мало не покажется. но на уровне сторонних либ уже все есть. в остальном работа с потоками уже давно была, forjoin лишь добавил доп абстракцию.

4) Аттрибуты нормальные - через анотации и кодогенерацию на этапе компиляции давно сделали, но сугубо мое мнение: это синтаксический сахар, причем какой-то слишком приторный.

в общем согласен с cat: автор пиши ещё!!!! как вчерашняя статья подняла настрой на весь день, так ты продолжаешь это славное дело сегодня.

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+2

ага, особенно сравнение с java

для примера один абзац:

>> В идеале следовало бы выделить под процесс Java или C# целое процессорное ядро, но, к сожалению, выделение ядер происходит иначе. Вы можете ограничить зону действия процесса одним ядром, но не можете «не допустить» в это ядро другие процессы. Поэтому я выделяю для опыта крупные серверы на Amazon EC2, системы которых можно считать базовыми.

разбор по предложению:

1) да просто дергаем sched_setaffinity на POSIX-системах, и SetThreadAffinityMask на Windows. все. наша прилага залочена на одном ядре

2) при загрузке ядра в линухе в параметрах указываем номера ядер на которые обычные процесы шудулить нельзя, чтобы туда попасть нужно явно запросить афинити на это ядро

3) микробенчмарки на амазоне зло, допускаю еще объемные бенчмарки на 5+ машин, микробенчмарки в пределах одной машины бессмысленны и беспощадны

чел про jit походу даже не слышал =) 2000 итераций, ничего что jit для серверной jvm срабатывает после 10к вызовов =) подозреваю еще java запущена была клиентская, а не серверная, а значит пачка оптимизаций в корзину сразу ушла.

ну и в заключении полное фаталити:

Я много лет профессионально занимался программированием на C#, мне неоднократно говорили, ссылаясь на личный опыт, что .NET — одна из самых быстрых существующих сред исполнения.

я даже не знаю как это описать, чувство что в мортал комбат с моим мозгом сыграли: удар, удар, комбо из 3-5 ударов, удар, подсечка, комбо связка, ФАТАЛИТИ !!!!

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+1

>> что им нравится, только чтобы сохранялась совместимость с предыдущими версиями

это вы хорошо отожгли =)

на уровне сорс кодов между версиями от 1.x до 4.x совместимости нету у .net

на яве совместимость не проблема собрать сорцы начиная 1.2 на версии 1.7.0_25(последняя). про то что собранный байткод запускается на любой последующей версии jvm я уже вообще молчу.

ну или может вы будете утверждать, что сайт мсдн уже врет ?

The .NET Framework 4 added support for in-process side-by-side execution, which required updating the existing CLR activation policy and adding a new policy for managed assemblies built with CLR 4 or later. As a result of this change, .NET Framework 1.0, 1.1, 2.0, 3.0 and 3.5 applications do not automatically roll forward to the .NET Framework 4 or later.

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

>> Ну и зоопарк всякий фреймворков, "серверов" и надстроек, где чаще всего каждый требует свою конкретную версию явы.

примеры в студию, без примеров это пук в лужу. вы путаете java и java EE, где спецификации действительно немного меняются, но даже там такой консерватизм.

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

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

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+1

1. ага, ничего что были прямые контакты на ms и даже те не смогли решить проблему.

2. ну а эти ребята идиоты походу, ну и по своей тупости отхватили кусок от крупного пирога, так как ну не знали они что на java такое писать нельзя =(

3. по тому и не использовали, что дальше версии на посмотреть в ресеч лабе она не ушла. вернее релиз кандидат выпустили и свернули проект, а обещаний было столько, что уши закладывало. Windows Azure - это аппаратная платформа, Dryad - аналог хадупа, но с таким большим обещанным количеством плюшек, что весь мир бы сразу на него перешел, но ..... не осилили запилить и используют java с hadoop.

4. а еще вложились netflix, twitter, linkedin, facebook. в общем все крупные конторки, а вот в .net почему-то ну никто не хочет вкладываться, хотя там столько всего имеется, а обещают еще больше. странно.

5. эпическая сила, они начиная с 4.0 добавили инлайнинг, а для 4.5 даже AggressiveInlining. снимаю шляпу перед ними.

6. для некоторых задач нужна максимальная общая производительность, для других отзычивость (gc работает в фоне), для третьих гарантия что мы не провалимся в своп и тд. хотя если разрабатывашь клиентские окошки или вебсайтики, то там да, нах это не надо (пользователь докупит рама, а вебсайтик если и ответит с задержкой, то никому хуже типо не станет, это же не высоконагруженные сервера)

7. да что вы говорите ? мне опять про совместимость мсдн врет ?

http://msdn.microsoft.com/en-us/library/hh367887.aspx

=) а про эклипс, я прошу примеры плагинов, без этого ....

>> И все версии .net могут рядом стоять, чего от явы добиться очень не просто.

ага, 4.5 ЗАМЕНЯЕТ существующий 4.0 и нельзя добиться одновременного существования 4.5 и 4.0 на машине

http://blogs.msdn.com/b/dotnet/archive/2011/09/26/compatibility-of-net-framework-4-5.aspx

http://msdn.microsoft.com/ru-ru/library/5a4x27ek.aspx

>> Даже чтобы тупо поставить 32 и 64 бит версии нужны усиленные телодвижения.

это как ? проинсталиь их в разные директории ? или для нужного приложения указать нужный JAVA_HOME и PATH? ну и в вашем понимании тянуть все версии с собой это нормально, хотя что еще от ms ожидать. а то понимаете у меня рядом стоят версии начиная с 5й по 8ю(использую пререлиз билд), а я и не знал что так нельзя, распакую с сайта оракла в нужную папку и юзаю.....

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

http://msdn.microsoft.com/ru-ru/library/8z6watww.aspx

Место на диске (минимум)

32-разр. 850 МБ

64-разрядный 2 Гбайт

неплохие такие требования к железу

p.s. оказывается как сильно нам врет мсдн =( аж плакать хочется

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+1

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

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+1

ну надо же как-то развлекаться =) а троллинг мое любимое занятие

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

Небольшой fix:

>> Только stackoverflow.com на .net написан ;)

чтобы говорить"даже" нужны еще примеры, а на данный момент их нет.

>> Только в .net всё равно не разбираются, не понимают, что inline уже в IL появляется, до трансляции в native.

уговорили, inline у вас есть, НО он есть на этапе компиляции, а не jit, что сразу отрубает пачку оптимизаций. простейший пример:

1) метод в качестве параметров имеет сигнатуру интерфейса

2) в процессе работы ему всегда падают объекты одного типа

3) следовательно можно сделать предположение, что сюда валятся всегда такие объекты и :

а) заинлайнить вызовы к данному объекту

б) поставить гвард на случай если все-таки вывалится другой объект и дергать его уже через call метода + перекомпиляция всего метода.

в .net таких предположений уже не сделать =(

Идем дальше и переходим к вопросам профилирования и дебага:

у вас нету кода либы, добавляете через IL дебаг инфу в метод, чтобы знать кто его вызывает, а тут БАХ и фейл, содержимое метода уже давно заинлайнено...... и спрашивается зачем тогда все эти пляски с байтккодом нужны ? метод вроде и есть, если судить по логике работы, то его дергают, но дебаг защита не работает. реально печалька, почти как в асме ковыряться.

>> И .Net всего 4 версии, поставить нужную, чтобы запустить, если что не работает 10 минут занимает.

я же говорю держать зоопарк для дотнета это нормально, данный подход мы уже поняли, что лучше десяток версий, чем одна последняя версия jdk. Но про одновременную работу 4.0 и 4.5 вы что-то пропустили в ответе. А еще никак не ответили на ссылки по поводу совместимости.

>> В вебе тож все на JS переходят

это вы про node.js так громко лужу газифицируете ? у которого даже многопоточности нормальной нету. ну если уж так хочется принципов как у ноды, то добро пожаловать на http://vertx.io/, подход к работе как у ноды, но список языков не ограничивается убогим js.

>> Станет вторым коболом, будет жить на серверах, пока их отключать не начнут.

ага, только на серверах, а еще останется жить в симкартах в виде J2ME, в виде полуявы в андроиде (который пихают и на микроволновки и в холодильники). Десктоп прилаги под виндой java слила .net'у, вот только почему-то сейчас все в облака и на веб переходят, а там у шарпа как-то послабее позиции, на серверах же java как кобол сидит

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

так если брать java как язык чисто язык, то я с тобой даже согласен (по моему глупо было бы отрицать унылость чисто java), но вот если сравнивать платформу jvm и .net, то тут же и начинается самое интересное и холиварное =)

как можно пройти мимо такого богатства?

времена бородатых дядек с дебагером не прошли и никогда не пройдут, их просто становится меньше, но никуда они не уходят полностью, кто-то же должен заниматься производительностью всего этого добра "динамических языков в байткод компилирующихся", не из воздуха же появилась поддержка invokedynamic вызовов, avx инструкций процессора и тд в jvm.

фултайм заниматься этим сложновато и не факт, что интересно, но понимать принцип работы необходимо, чтобы не было фейлов вроде: чтобы сэкономить на вызовах функций мы все пихаем в один метод, а о том что оно и так будет инлайниться мы не знаем =)

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

>> Если это debug, то откуда оптимизация?

у вас есть сторонняя либа, собрана в release, она работает не так как вам нужно, вариантов обхода 2:

1) забить и молиться

2) патчить байткод

но с патчингом у вас возникнут проблемы, так как на руках "баткодовый недобайткод".

>> Да какой зоопарк. 2.0 все уже поставили, кому нужно. 3.5 по умолчанию с виндой стоит. 4.5 поставят если нужно или с update приедет.

Ага, это не зоопарк, а нормальное состояние. Я же про то и говорю, что умом дотнет не понять. Особенно на фоне установки одной версии jdk и запуском всего добра на ней.

>> А еще никак не ответили на ссылки по поводу совместимости.

по поводу одновременного запуска в пределах одного процесса нескольких версий либы ? не умеет, зато умеет автоматом обновлять в рантайме код запущенного приложения (гуглим по словам jrebel), использовал как для дебага, так и для обновления игровых серверов (600+ онлайн, обсчет мира каждые 0.5с, пользователи даже не знали, что сервер обновляется). .net такого не умеет

Совместимости на уровне исходников и среды выполнения нету. решается поддержкой зоопарков версий и side-by-side execution.

>> Если вдруг кому-то лень ставить 2.0, а есть только 3.5, то запустить собранное для 2.0 можно добавлением одной строчки в config.

это вы пользователям будете объяснять как конфиг файлы править?

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

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

>> но у oracle не очень репутация

зато у ms репутация за__сь, напомните мне что стало с silverlight? в течении N конференций мы его пиарим и говорим что будущее за ним, на N+1 конференции объявляем его deprecated и подтверждаем, что развивать больше не будем.

в части java у оракла как раз таки оооочень прозрачные позиции, так как это их хлеб, вся их мидлваря написана на java, они же увеличили вливание в java по сравнению с тем сколько вкладывала sun, и тд и тп.

>> а есть питоны и руби и тот же js, которые более "модные" сейчас и со временем могут составить конкуренцию.

Не смешите меня по поводу питонятины, он был популярен года 4-5 назад, когда гугл его пиарила, сейчас наплыв спал. Руби отличен для быстрой разработки ui (те же рельсы), что-то высоконагруженное или со сложной логикой писать это полный мрак. js ... как бы это вам сказать, не более чем "модный", даже гуглы свой dart на замену пытаются пропихнуть для веба, а лапшу для node.js ковырять нужны крепкие нервы.

>> А вы насчёт сравнения языков уже второй раз проигнорировали.

вам кинуть другое сравнение ?

http://i.imgur.com/o633R.jpg

Задам один вопрос:

"вам шашечки или ехать?"

>> Насчёт микрософтовских reseach, это вы зря думаете, что если там на что-то забили, значит оно не взлетело. Был ещё интересный Singularity project, это вообще операционная система на управляемой среде.

интересный для дотнетчиков, бессмысленный для остального мира, на java делали тоже самое задолго до этого:

http://ru.wikipedia.org/wiki/JNode

параллельно идет разработка по запуску jvm сразу поверх гипервизора (без оси):

1) гуглим guestvm

2) проект MAXINE https://kenai.com/projects/guestvm

>> Да на самом деле никому не интересна абстрактная производительность ява vs С#.

многим интересна производительность их серверов, так как удвоить мощность имея 2 сервера и 200 выливается в совсем разные суммы.

>> Ибо если винда, то это C#, если не винда, то тут уже появляются варианты

если винда, то тут как раз таки есть варианты: дотнет или моно, если не винда то только моно. а с моно это отдельная песня.

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

ну вот ты как обычно сыпишь соль на рану дотнетчикам.

ты бы еще disruptor вспомнил

http://bad-concurrency.blogspot.com/2013/04/release-of-disruptor-300.html

Faster for the Single Producer Case

The one producer to one consumer benchmark* shows around 220M ops/sec for version 3 compared to 80M ops/sec for version 2. This has been mostly the result of general clean up (e.g. removing ClaimStrategies) and a few small optimisations.

они уже сказали, что LMAX дятлы, и такие вещи пишутся на асме и си.

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

эм, я вроде назвал, но давайте пройдемся:

http://www.alexa.com/topsites

1. facebook - система сообщение puma (основана на hbase), вся обработка данных hadoop.

4. yahoo - поисковый движок написан на hadoop

5. amazon.com - тут говорить про их планшетки, и aws мы будем на чем они работают и что для поддержки инфраструктуры используется?

12. Twitter - посещаемость такая, особеннов в пики выборов и тд, что live.com и msn.com тупо курят в сторонке. кстати вы не напомните мне почему msn закрывают и переводят всех в добровольно принудительном порядке на skype ?

16. linkedin.com - весь ui на java

против:

8 live.com

25 MSN - упс

не густо

отдельно упомянем:

netflix.com - аудитория тоже не маленькая, все на java, исключая проигрыватель на сирлвеллайте с которым не знают что теперь делать, после того как ms его кинула

по рунету в пятерке:

odnoklassniki.ru - java

.net - не обнаружено

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+3

ага, необходимость удвоить мощности можно покупкой серверов, НО:

когда у вас 2 сервера, то дешевле

когда у вас 200 серверов, то дешевизна становится минусовой

когда у вас 1000 серверов и вы покупаете еще 1000, то акционеры вас увольняют

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

а в Intellij Idea еще приятней чем в студии =)

студия уже обзавелась нормальным рефакторингом? а то что-то по интернетам везде пишут для без ReShaper от JetBrains там какой-то изврат получается.

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+1

не хочу вас расстраивать, но ...

http://cdn-static.zdnet.com/i/r/story/70/00/015496/screen-shot-2013-05-16-at-07-37-26-615x266.png?hash=ZGSyAGZ4AG&upscale=1

3% виндафона vs 75% у андроида не вызывают даже смеха

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

>> facebook - страниц у них до чертиков на php, вот и приходится им как только не изголяться. новое высоконагруженное отнють не .net, а jvm, ну не хотят они непредсказуемого поведения от своих серверов.

>> yahoo - Упс?? Yahoo! search engine would be replaced by Bing.

решили оутсорсить поисковый движок и теперь теряют рынок.

>> Twitter - так что твиттер? UI на яве?

UI на js на клиенте, бэкенд полностью на java (вернее там смесь scala + java, но все крутиться на jvm). Или у вас c# научился в браузере выполняться?

>> Т.е. есть hadoop project, который все юзают, потому что бесплатный и не привязан к вендору и на этом основании делаем вывод, что java лучше .net?

+ разработка ms на дотнете так и не вышла из стадии ресеча, в итоге даже ms в azure запускает java. если запуск прямых конкурентов в своей инфраструктуре не называть фэйлом, то уж не знаю что дальше говорить.

>> На 90% десктопов стоит .net и чё?

на 90% десктопов рядом с .net стоит IE, делаем вывод что "миллион мух не может ошибаться" и IE самый популярный.

хм, то есть мы считаем только рендеринг веб ui? все что поддерживает работу сайта и инфраструктуры уже не считается?

ну ладно, тогда так и запишем: дальше рисования web-ui .net'у и шарпу на стороне сервера делать нечего.

вы меня убедили в том, что я и так знал =) поздравляю

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

http://www.bluestacks.com/

=) вот и запуск андроид игр и тд на обычных десктопах.

нужно учитывать, что android это java как язык, НО не java как платформа =) так как dalvikvm это не jvm. на уровне платформы совместимости полной нету, в частности отсутсвует awt и swing. В остальном консольное приложение не проблема запустить точно так же как и на десктопе (простейшая обертка чтобы андроид воспринимал иконку и тд, внутри запуск нужной нам консольной утилиты):

http://habrahabr.ru/post/162741/

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

дополню:

https://code.google.com/p/i-jetty/

черти дописали оберточку для популярного сервлет контейнера jetty и запускают его на мобилках.

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

пример с серверами был не только в тюнинге настрек, но и в первоначальной выборе платформы:

если для .net нужно 5 серверов, а можно уложиться на 1 сервер с java, то тут уже большой вопрос, что выбрать, так как скорость разработки под .net не в 5 раз быстрее =)

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

>> Может с дефолтовскими настройками что-то не так?

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

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

m1.xlarge - $0.480/h * 24 * 30 = 345.6$ в месяц

умножаем на 1000 инстансов =345 600$ в месяц обойдется расширение

может все-таки нанять бородоча будет дешевле ? так как даже по 300$ в час он за эти деньги будет работать 345 600 / 300 / 168 = 6.85 месяцев на фултайм.

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

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

для санок java не была целевой платформой, у них основную часть составляли продажи железа. да и java к моменту кончины sun была уже в opensource, заработок только на поддержке СТАРЫХ версий, новые версии апдейты идут бесплатно. доп заработок с java, это продажа лицензий на j2me (тут еще была возможность попытаться содрать денег с андроид).

>> Оракл сильно поднялся после покупки явы?

а теперь внимательно смотрим новости и развитие событий которое происходит:

1 покупаем санок

2 налаживаем выпуск своих железяк

3 основные фишки для базы данных делаем для спарков и соляриса

4 прикрываем работу для intel itanium

5 пока оставляем работу на x86, но постоянно намекаем всем, что у нас есть полные стек технологий начиная от железа и заканчивая софтом, покупая весь стек имеете скидку + поддержку + гарантию что у вас точно все будет работать

6 profit

или вы думаете, что покупка была только из-за java ? у оракла на тот момент уже была своя jvm jrockit, которая местами превосходила сановскую, сейчас идет мерж этих двух технологий.

java конкурент .net

прямой конкурент, не зря они так пиарят везде превосходство .net

>> azure как бы даёт и linux ставить. Любой каприз за ваши деньги.

ну ясен пень, в противном случае без linux и java этот azure так бы и осталась маргинальной платформой несмотря на весь пиар и потуги

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

вот этого и не хотят понимать люди, для них облака это простое масштабирование и желание побыстрее написать говнокод, лишь бы красиво было.

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

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

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

конкретно в андроиде нет, оракл за dalvikvm не отвечает.

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

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+4

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

java:

1. размеры хипа

2. в определенных местах реализацию сетевой подсистемы

3. тип и принцип работы gc, для некоторых типов максимальное время работы, для всех минимальное/максимальное количество занятой памяти прежде чем он запуститься и тд.

4. параметры jit (когда, на чем, лимиты на инлайн, срабатывание biaslocking, список длинный)

.net:

1..

2..

заполните список ? или без перекомпиляции мы будем сосать лапу?

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

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

эм, а то что разработка идет в опенсорс - java (эталонная реализация это openjdk), для java ee эталоном выступает glassfish (разработка в опенсорсе).

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

лучше когда все за закрытыми дверями, что-то делаем, потом говорим - "юзайте это просто за__сь!!! мы пока так думаем, но может и передумаем и закроем, а у вас даже сорцов не будет, для фикса критикал багов, но это будет завтра, а сегодня праздник"

хм, "солянка": есть jsr(он же стандарт), есть референс реализация (можно использовать ее и в ус не дуть).

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

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

ссылка на доступ к коду не открывается

срач 2002 года, полный свежачек, более древнего говна мамонта у вас не нашлось?

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

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

-1

>> Вы отчёты почитайте на чём они деньги зарабатывают - ось, офис и сервера (которые не железные).

это зарабатывает ms.

санки зарабатывали на железе в основном.

ораклы зарабатывают на всем (железо - спарки, ось - солярис и линух, пачка софта от базы данных и заканчивая imdg).

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

ms делало свою jvm несовместимой, но называться java и jvm хотела.

google кстати в суде на это и упирила, что они нигде не называли свой dalvikvm заменой jvm. да используем один язык, но вот среда выполнения у нас совсем другая. поэтому язык для андроида java и компилируется с помощью jvm, но вот выполняется уже совсем другой байткод.

Microsoft paid Sun $20 million - по вашему это деньги для таких компаний ? да не смешите меня.

>> Так что не нужно тут про свободную яву.

свободная не значит, что каждый может брать и делать, что хочет, несовместимых мутантов. делай, но указывай что ты не java и jvm, до тех пор пока не пройдены тесты совместимости на это у тебя нету прав. жестко, но справедливо.

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

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

ну что 1.6 ярда отжали правильно, зато другим уже неповадно после этого было.

все версии (а их отнють не 2 и не 3) проходили сертификацию и работали в своих нишах нормально. сейчас даже с нуля в россии очередную jvm пилят, и ничего, весело парням.

>> Mono значит законы нарушает? Спецификация сертифицирована и может кто угодно реализовывать.

моно это полностью сторонняя реализация .net, никакого шаринга кода с офф дотнетом и тд, если найдут заимствования, то от моно ничего не останется.

>> Самих микрософт исходники .net открыты. Смотреть можно, менять нельзя.

открыты исходники базовых классов, asp.net и тд, не все. но только посмотреть и даже в моно их затянуть нельзя, так что толку от них полный ноль. собрать рабочую версию готового фреймворка из этих сорцов нельзя, так как отсутвуют классы работы с jit, gc и тд.

Так пощупать такого кастрата санки давали с самого начала, java классы всегда шли в поставке jdk, ms же после туевы хучи времени решила порадовать своих поклонников и избавила их от необходимости возиться с рефлекшеном, чтобы понять, что творится с их кодом.

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

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

-1

молод я еще, чтобы бородой трясти =)

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

про пачку бородачей я тоже утрирую.

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+6

неужели первый нормальный комментарий =) уже думал не дождусь, от себя хотелось бы добавить:

1. Помимо YARN в hadoop 2.x добавили пачку плюшек для hdfs, особенно:

1) federation namenode - кто работал с linux знают как от рута расходится дерево каталогов, а диски можно монтировать в любую точку, точно так же можно монтировать сторонние кластера в каталоги для получения одной большой структуры. главный профит - снижение требований к namenode (особенно по памяти), увеличение общей пропускной способности и тд

2) HA namenode - горячее переключение namenode, адрес текущего мастера хранится в zookeeper

2. Hive медленный так как использует MapReduce в качестве способа работы. А тут и оказывается что Map результаты все кидает на диск после окончания, Reduce подымает эти все данные с диска и только потом с ними работает, если запрос достаточно большой, то может оказаться что там несколько MapReduce операций, что еще больше замедляет запрос. Для борьбы с этим можно посмотреть на проект Tez который пилит хортонворк, он требует YARN на кластере, но в результате у вас имеется что-то вроде направленного потока вычислений. http://hortonworks.com/blog/introducing-tez-faster-hadoop-processing/

Impala же по своей сути больше похожа на teradata или greenplum (распределенная выборка, сортировка, p2p коммуникация между нодами, распределенный hash join и тд). Для batch процессинга лучше хайв, для realtime выборок из малых и средних объемов заруливает импала.

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+3

Автор, я конечно могу быть неадекватен, но несколько вопросов которые не дают мне покоя:

1) вы сами использовали hadoop в чем-то более серьезном чем просто запустить?

2) почему в качестве примера установки выбран апачевская версия, да еще и с установкой на макось, да еще и с компиляцией, разве не проще тогда было написать как поставить виртуалку с любым линухом, прописать клоудеровские репозитории и одной коммандой через yum/apt поставить все модули ?

3) HBase реально способен справиться с очень большой интенсивностью операций запись/чтение – грамотно реализованный и распараллеленный MapReduce позволяет расти пропорционально с увеличивающейся нагрузкой --- какой в hbase MapReduce??? не было его там, была интеграция с хайвом (кривая), добавили вот сопроцессоры, но MR там отродясь не было, если только ручками писать, но он не самый оптимальный способ работы с hbase.

4) Все сообщения хранятся в заархивированном виде (LZO-компрессия) - да, настраивается одним параметром на этапе создания таблицы. ну или File(Output/Input)Format для hive, но самое интересно не в этом, а в том как facebook реализовали raid поверх hdfs http://download.yandex.ru/company/experience/yac/Molkov.pdf (стр 19-21).

5) Такая жесткая монолитная интеграция приводит к переключению работы файловой системы HDFS в режим, близкий к реальному времени. - это что за набор слов? можно ссылки, особенно про реальное время. просто я знаю как работает namenode, почему существует проблема с репликацией и ha, но впервые слышу про такие вещи.

6) Говоря про Hive нельзя не упомянуть Pig и то что они в принципе 2 инструмента для одной задачи, распределение по использованю:

Pig - Yahoo!, Twitter, ebay, AOL, LinkedId, Nokia, SalesForce.com

Hive - Facebook, Last.fm, LinkedIn, ebay, CNET, Digg, Hulu, Netflix

7) Упомянутый кластер на базе Hadoop/Hive, на хребте которого зиждется работа большинства служб Facebook, в настоящий момент обслуживает всего три человека. -- ой что-то я сомневаюсь, к тому же у фейсбука несколько мелких кластеров по всему миру + один большой в основном датацентре. А один большой из-за того, что хадуп очень плохо работает в действительно распределенной среде (несколько датацентров).

8) Трехуровневая инфраструктура Facebook для обработки данных на базе HBase - опять же ссылку можно? стандартная практика - для hbase один клатер, для map-reduce второй, пересечения по hdfs возможны, но там становится все намного сложнее.

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

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

а по мне он прост как топор =) (поднимал/собирал/кодил под него/ковырял сорцы внутри)

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

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

проблема масштабирования дополнительно имеет корни еще в самой архитектуре namenode:

весь образ fsimage находится в памяти

создание файла или выделение доп блока на запись фиксируются в памяти

все изменения результирующие попадют в write-ahead лог

НО попадают они туда только после того как файл закрыт,

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

попытка логировать даже выделение блока уперлась в производительность дисковой подсистемы (много мелких транзакций + быстро растущий файл логов).

federation было одним из способов для начала разгрузить namenode.

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

можно указать несколько точек куда писать лог изменений hdfs, стандартная практика:

1) одна копия на локальной фс + доп копия на nfs

2) одна копия на локальной фс + док копия на drdb

ну и плюс к любому варианту Linux-HA для переключения IP.

Хотя в facebook немного перепилили hdfs-client чтобы он чекал текущего мастера в zookeeper.

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

ну вот не надо тут про Clojure травить =)

https://github.com/nathanmarz/storm-starter

Java 68.1%

Clojure 20.5%

Python 8.9%

На кложуре сделана обвязка как в erlang и процессы супервизоры, сам вычислительный фреймворк trident написан на java.

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

стоооп =)

Имеем достаточно простую в понимании архитектуру, НО простота не гарантирует стабильности, особенно не гарантирует стабильности бурное развитие =) кому охота сидеть на саппорте старых веток, когда в транке идут оптимизации и разработка распределенной работы?

Основной хлеб клоудеры:

1) backport для последних bugfixs - в стабильную ветку попадают багфиксы из текущего транка даже

2) поддержка стабильного api - api для mr у нас от 0.20, а hdfs уже от второго хадупа.

3) их cloudera manager

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

Я уже неоднократно говорил: Cloudera для Hadoop это тоже самое, что RedHat для ядра и линукса, мы имеем гарантированную стабильную работу определенной версии и поддержку патчей для стабильности/безопасности.

По количеству коммитов клоудера больше пилит mr и немного hdfs, основной вклад хортонворка идет в hdfs ну и попытку пропихнуть yarn в массы. Саму клоудеру я очень уважаю, так как почти все продукты что они разрабатывают отдают в apache, хотя продолжают развивать их.

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

-3

=) хорошо: чтобы клиент перед запросом проверял в zookeeper текущего мастера, кешировал у себя на короткий промежуток времени и при необходимости переключался на новый

устроит ?

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+2

да, совершенно верно со ссылкой

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

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+4

>> За первые три месяца я прошел более тридцати курсов по SAP и сдал сертификат по SAP Financials, потом еще один....

боюсь представить такие крутые курсы которые можно пройти за 3 дня (3 месяца * 30 дней в месяце / 30 курсов), а если брать только рабочие дни, то вообще за 2 дня.

>> основанной на революционной технологии In-Memory

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

основная заслуга SAP в этом плане: мы сумели пропихнуть это как супер решение в кровавый ентерпрайз, все на ура схавали.

и да =)

сам себя не похвалишь, никто и не замит насколько ты крут

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+4

а в чем проблема залить эти данные в любую из imdg? что jboss infinispan и oracle coherence такие объемы переваривают, имеется встроенный map-reduce для выборок. Есть и более сложные варианты выборок из них.

Если нужна аналитика, то Druid от Metamarkets вам в помощь, причем реалтайм индексация входящих событий + подтягивание исторических данных, во многих обзорах druid прямо противопоставляют sap hana, но как более дешевый вариант (вернее платишь только за сервера, сам код открыт). В том же Netflix в пике имеют по 1,8 терабайту в час и как-то сильно не нервничают, про революционные технологии не кричат, просто работают.

Danny Yuan, Cloud System Architect at Netflix, and I recently co-presented at the Strata Conference in Santa Clara. The presentation discussed how Netflix engineers leverage Druid, Metamarkets’ open-source, distributed, real-time, analytical data store, to ingest 150,000 events per second (billions per day), equating to about 500MB/s of data at peak (terabytes per hour) while still maintaining real-time, exploratory querying capabilities.

http://druid.io/blog/2013/05/10/real-time-for-real.html

Про процессинг через impala уже ниже упоминали, она неплохо терабайтами тоже ворочает.

Так что и представление имеется, и взяться готовы =)

Правда вот на всех вышеперечисленных технологиях денег не попилишь, но тут как супермен на помощь приходит SAP с пачкой продуктов, вот где раздолье то.

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

А я и не говорю, что сделано будет весело и непринужденно, в распределенных средах хватает не веселья, а "веселья" =) Но если не браться, то откуда опыту появиться?

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+1

я что-то не видел у SAP своих мощных датацентров. Те cloud, что они относительно недавно начали предоставлять на сильномощные не тянут, основная их ставка на максимальную безопасность. Мощностей сейчас в мире более чем достаточно, поднять кластер в amazon на сотню машин, протестировать что нужно и заглушить его, расходы не такие уж и высокие. Если нужно тестировать отказоустойчивость к потере нод, то тут вообще простор с spot интансами, даже глушить вручную не надо, амазон их сам начнет килять.

cr1.8xlarge - spot $0.343, поднять их десяток и у нас имеется 2,44 ТБ RAM за 3,5$/h, я даже и не знаю как эту тестовую площадку назвать.

p.s. походу нижеперечисленные компании где-то не там свернули:

metamarket не имеет своего датацентра, но написала отличную вещь.

netflix не имеет своего датацентра, но тоже написали много отличных вещей.

twitter не имеет своего датацентра, но открыли один из лучших проектов для event processing (писала вообще сторонняя небольшая контора).

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

hetzner свой датацентр, ни одного продукта

digitalocean свой датацентр, ни одного продукта

вот что действительно не нравится в нашем местном IT, так это его повальная ориентированность на outsource, в котором что-то полезное проскакивает совсем редко, в большинстве случаев это печальный кровавый ентерпрайз. Количество продуктовых компаний которые могут и готовы делать что-то интересное очень мало, а значит и после определенного уровня в Минске становится скучно и люди уезжают.

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+4

только вчера обсуждали, что все это больше похоже на сборище маркетологов для маркетологов:

собрались, подарили подарочки, порадовались, мимими, разошлись

p.s. к твоему уровню претензий нету, так что вызывает уважение позиция и выбор сняться с голо-сования.

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+1

>> Это показатель того, что нет здоровой конкуренции среди соискателей, а значит специалисты "не развиваются" и "заплывают жирком".

С этим согласен, но раз уж "мыслить надо ширьше!", то возникает вопрос: а где здоровая конкуренция между работодателями?

Если посмотреть на рынок, то в подавляющем большинстве это печальный однообразный оутсорс по пилению очередной бизнессистемы по заданным еще 5 лет назад спекам, в которой и работаешь как на заводе, "смену откодил и домой". Да, существуют пару небольших компаний которые пилят свой продукт или интересные идеи, но их можно пересчитать по пальцам одной руки (сужу по java server side, в среде .net вроде ситуация не сильно отличается).

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

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+3

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

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

>> Так вот, мой ответ на этот вопрос - нет.

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

Поэтому ответом считаю: не каждый наемный, но некоторые могут.

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

p.s. может я немного эгоист, но что бы там не плели про корпоративный стиль, гордость за комнанию, причастность к продукту, общие цели и тд, я воспринимаю достаточно прохладно, так как если кто-то хочет чтобы я относился к продукту как к своему и тд, то дайте долю, а если меня воспринимают как наемного рабочего, то я воспринимаю работадателя как человека платящего за мои навыки и время, мы выполняем поставленные планы и на этом все. В этом плане наемный рабочий ничем не отличается от наемника в средневековье: обмен навыков/времени/жизни на золото.

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+1

1. Почему строки в .NET являются неизменяемыми объектами (immutable)?

http://habrahabr.ru/post/172627/

в итоге вопрос стоит неправильно, строки при желании можно и поменять, это в Java строки сугубо immutable

2. Что такое интернирование строк в .NET и можно ли отключить это поведение?

http://habrahabr.ru/post/165729/

я бы поставил вопрос по другому: по версии дотнета свангуйте дефолтное поведение string str1 = String.Empty, интернируются или нет?

как раз будет хорошо в контексте остальных вопросов.

3. Почему для конкатенации строк лучше использовать StringBuilder, а не String.Concat?

А действительно ли это так?

http://habrahabr.ru/post/220921/

String.Concat VS StringBuilder.Append

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

p.s. сам занимаюсь java, но как-то от ваших вопросов попахивает не очень хорошо, так как с такими вопросами нормальный c# программист может затроллить собеседующего, а уж получить после этого офер думаю ему мечтать не следует.

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+2

про дебагер по мне достаточно ожидаемо, ну да ладно.

>> Если каждый раз для сложения малого числа строк создавать новый экземпляр StringBuilder

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

А по поводу бенчмарков:

_sarcasm on_

смотрю на них и c радостью любуюсь простоте jit под c# =)

ни тебе прогрева, ни профайлинга, ни deadcodeelliminations, сказка, а не компилятор

_sarcasm off_

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

Сравнивать с "нормальной rational" можно, вот только эти "нормальные" вылетают в очень хорошую копеечку только за базовую лицензию, не считая ежегодных отчислений, а на эту копеечку можно поднять целый кластер NoSQL на амазоне и гонять его в течении пару лет. Хоть сам хорошо ковырял NoSQL, но перед тем как у меня уточняют какую базу взять, я задаю стандартный вопрос: "А вы уверены, что оно вам нужно? Опишите сразу проблему, а там будем думать". Иногда действительно гонятся за модным словом, но иногда попытки решить это в стандартном поле или невозможно (простые sql базы на обычном железе) или слишком дорого ("нормальные" sql типа оракла на специализированном железе). Все хотят дешево, качественно, быстро ;)

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+2

Согласен, что беготня со стороны заказчиков бывает, но когда дело доходит до подборки сотрудников, то резко оказывается, что люди с "большим опыт оптимизации, проблем с памятью и тд и тп" не способны ответить на простые вопросы "как устроен heap в jvm" или "как работает сборщик мусора", спрашивать про JMM можно вообще у единиц (этих единиц хорошо если 1 к 10, а то и меньше). Как человек пришедший на server side хочет писать многопоточные распределенные приложения, если он не знает основ? Поэтому поиск в результате и сводится к поиску людей с "правильным набором личностных качеств и нормальных базовых знаниях" которых и можно чему-то научить за 3-6 месяца, до более-менее нормального уровня. Да и buzzwords исчезает сразу после того, как появляется задача не просто использовать технологию, а в пределах этой технологии в ней самой фиксить одни баги и смотреть как обойти другие, когда то что красиво смотрится на бумаге в реальности имеет 1001 нюанс в реализации, которые нужно учесть. А платят в первую очередь из-за дефицита, так как у нас индустрия выросла на outsource, то найти человека с Spring-Oracle-Hibernate намного проще такого же человека с highload/bigdata.

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+1

JSR 133 Java Memory Model.

В плюсах появилась начиная с C++11 (по большому счету взяли из java и ослабили пачку требований, так как ближе к железу). В сишке тоже вроде как с C11 появилась.

http://en.wikipedia.org/wiki/Memory_model_(programming)

если в двух словах: определяет когда один поток увидит изменения внесенные другим потоком.

если углубляться дальше, то модель памяти определяет какие операции можно переупорядочить при сохранении корретности работы (это может делать компилятор, jit, железо во время самого выполнения)

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

ну как вам сказать, как раз не утрирую, пару примеров:

- из чего состоит хип?

- ... (тишина, в лучшем случае скажут, что есть какие-то области)

что хотелось бы услышать: хип делится на 3 части, Eden, Survivor, Old. объект рождается сразу в едене, после первой сборки в сурвайв уходит, после нескольких сборок попадает в старое.

большим бонусом будет расширенный: большой eden плох тем, что сборка в нем всегда stw и копирующий, маленький тем что объект успевают перелиться в old и там сразу же умирают, но успевают приблизить сборку в старом, везде нужен баланс. посмотреть загрузку можно через gcutil, статистику сборок включить через gclog.

второй пример:

- как устроен gc?

- ну ... могу в общем только рассказать

- давай в общем

- бывает построен на подсчете ссылок

- в jvm такой есть?

- уже нету

- O_o а был?

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

>> Но многие не расскажит более детально там например про все области Heap и при каких точно условиях объекты попадают в ту или иную область

в зависимости от того в какую область попадет объект, можно его быстро собрать в молодом или придется потом собирать намного больший old, так что это знать "полезно". а без профайлинга сказать будет ли вообще в этом месте объект я в 99% случаев не берусь, так как сработает escape analysis и взрыв объекта и всё... алокации уже нету, хотя по коду видим new.

без перечисленных знаний я не понимаю как человек может заявлять, что он Java Senior Developer с упором на server-side. Да ты можешь быть хорошим программистом и ковырять play/jsf/spring/hibernate, где у тебя все потоки изолированы и о concurrency реги не идет, но уж если лезешь в чуть другую область, то будь добр хотя бы посмотри, что там могут спрашивать.

>> В общем у меня складывается впечатление что в большенстве случаев люди приходящие к подобному умозаключению исходя их таких вопросов .. сами просто не имеют опыта оптимизации... прочитали перед интервью про мемори модел и пытаясь не забыть что они там прочитали идут на интервью...

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

и нет =) ни jmm ни heap/gc я перед интервью не повторяю уже давно. название флагов знать не обязательно, но их существование и что можно поменять знать очень желательно.

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

все что нужно знать указывается в описании вакансий, за него никогда не выходят =) если же для этого нужно знать хорошо то, что через 2 года устареет, то это все равно нужно знать, а не строить отговорки "я же могу погуглить". it вообще постоянно устаревает, но ведь из этого никто не делает вывод, что знать ничего не нужно.

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

>> Ну значит часть ваших знаний уже устарели ;) .. если только вы не работаете с одной и той же JDK

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

1) http://openjdk.java.net/jeps/0 - общие изменения, которые войдут в будущую версию и в текущую стабильную ветку

2) http://openjdk.java.net/projects/jdk9/ - то что ожидается в следующей версии

3) исходный код, вытянуть hg репозиторий не долго, но даже пробежав глазами по комитам находишь пачку отсылок на интересные фичи

поэтому знания у меня не "уже устарели", а я дождаться не могу когда же это появится в тещем stable или выйдет новая версия платформы =)

>> Более того то что вы описали очень поверхностно и даётся в некоторых обычных книжках по Java как общая информация

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

>> я бы очень хотел чтобы было уделено внимание конкретно тому моменту как именно понимание распределениея памати по областям вас привело к решению проблемы и что конкретно было сделано

анализ вывода gc.log показывал, что нужно:

1) тюнить размеры eden/old

2) увеличивать/уменьшать количество сборок прежде чем объект уйдет в old

3) необходимость сделать дамп и провести анализ почему у нас количество выживших объектов в new между 2-6 сборками почти не меняется и остается достаточно большим.

1-2 напрямую позволяют управлять отзывчивостью приложения

3 позволил снизить количество объектов в new с 780МБ до 130МБ, время minor сборки улучшилось в разы, в old почти перестали данные перетекать, а значит время между ними тоже увеличилась

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

пока пишешь очередную вебморду или бизнес портал, на это всем плевать, когда же пишешь онлайн игру, то разница в 0.1с или 1.0с у тебя была пауза уже чувствуется очень сильно, я не говорю уже про биржевые торги, еще пример RPB биржи для рекламы, у них sla на ответ в 50ms сейчас (до недавнего времени было 100ms, что тоже не фантан)

p.s.

1) https://github.com/JetBrains/intellij-community/blob/ff16ce78a1e0ddb6e67fd1dbc6e6a597e20d483a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ErrorPaneConfigurable.java#L113

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

2) https://github.com/JetBrains/intellij-community/blob/51b66a0cd64bad34e5528a7e8b1c4774475ebef9/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/libraries/LibraryImpl.java#L180

вынос file.getUrl() в отдельную переменную за пределы if, позволил исключить двойной ее вызов, в результате на треть уменьшилось время reimport на крупном проекте, да и расход памяти тоже где-то на треть.

3) https://github.com/netty/netty/pull/2340

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

продолжать можно долго

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

пожалуйста =)

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

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

Извиняюсь конечно, но что-то вы погорячились с "25 мая корпорация Oracle, пользователи и сообщество разработчиков по всему миру отмечают 20-летие Java"

20 мая: http://www.oracle.com/us/corporate/press/2545455

23 мая основные торжества: https://community.oracle.com/community/java/javas-20th-anniversary "May 23rd marks 20 years since the first version of Java was released for public use"

википедия: Дата официального выпуска — 23 мая 1995 года.

хотя бы проверяли такие даты, а не как обычно слепо делать репост с украинских ресурсов (да и он уже убрал эту "новость")

p.s. все-таки нашел эту новость..... но ссылка от редактора битая, вместо tc.ua должно быть itc.ua

http://itc.ua/news/segodnya-yaziku-java-ispolnyaetsa-20-let/

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

а может вопрос не в графике, а в возможностях песочницы?

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

p.s. сам майнкрафт мне не зашел, но тот же dwarf fortress или angband & adom по проработке игровой механики оказываются лучше многих своих аналогов с графикой ;)

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

а вот тут еще можно поспорить =)

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

посмотрите на тот же Don't Starve и целую плеяду indie игр. да они не будут очередными хитами которые продались за первую неделю на 1mm долларов как gta, а через годик мало кто вспоминает, но они те кто имеет очень высокую реиграбельность и толпу поклонников которые будут держать продажи на плаву в течении нескольких лет,

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+1

не, ну а как по другому объяснять пользователям почему разный DPI между 2мя мониками или монитором и ноутбуком научились делать только в 10ке (по крайней мере обещают, нету возможности потестить, но в 8ке еще не работает и попытка подрубить 4к монитор в пару с обычным заканчиваются большой болью).

в macbook это с момента появления первых ретин... ой, это же было уже 2013 и все работало как часы...

подход MS: напихаем топового железа, а там может оно как-то само будет работать. пилять, что происходит, почему покупают не наше топовое, а старое железо у apple???

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

>> Сообщение имело длину всего в 16 бит, каждый из которых равнялся 0 или 1

а разве бит может быть чем-то другим кроме как 0 или 1?

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

а сколько "здесь" нормальных людей найдется на эти позиции?

то что я вижу со своей java колокольни:

fitbit ищет уже давно Solution Architect & Tech Lead на свои сервисы,

playtica тоже только недавно позицию на Solution Architect закрыла,

epam уже 1,5 года ищет людей на Solution BigData Architect

вопрос ведь в том, что наши родные доморощенные Senior за 2 года и Lead за 3 года никаким боком под эти требования не проходят.

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

я знаю отличия ;)

просто я к тому, что даже на Solution Architect тут не найти людей, а уж на Enterprise Architect тем более найти просто нереально.

так что нытье про нехватку позиций немного смешно,

к тому же знаю у того же epam на Solution Architect и Enterprise Architect есть внутренние курсы, так как на рынке просто нету достаточного количества специалистов, поэтому сами растят

ну и ниже уже указали, что на "4..5к в месяц" даже Enterprise Architect не нужен, иногда достаточно и Senior, да и по моим вакансиям предлагались сопоставимые или выше з/п.

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+6

Денис, github vs jira даже не смешно, ты будто не видел сложных связей в jira, поддержку какие тикеты уходят в какой релиз, компоненты и тд =)

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

Касательно targetprocess:

из коробки он неплохой tasktracker при попытке его использовать достаточно неплохо показал себя для того же отдела маркетинга (они вообще были счастливы),

но как bugtracker это была боль и страдание, нам обещали его привести к нормальному виду, но мы так и не дождались, продолжили использовать jira,

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

для меня как для девелопера jira с одной стороны имеет все что мне нужно, но ничего лишнего

targetprocess имел много всего, но ничего их этого мне не нужно было, а нужные вещи были закопаны глубоко внутри

ну и сами разработчики ниже тебе ответили: "Targetprocess слишком сложен для open source проектов"

хотя чем open source отличается от обычных для меня загадка

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+6

ну допустим меня много раз приглашали на собеседование хотя я прямым текстом говорил

"переходить сейчас не намерен, но если вам не жалко времени ваших инженеров, то придти просто посмотреть что у вас есть согласен"

в будущем мне это решало несколько задач:

1) когда меня перестало устраивать текущее место, я уже знал что у каких компаний есть и куда мне стучаться, со стороны компании у них уже есть твоё собеседование, поэтому общение идет в ускоренном режиме

2) компания понимает кто и что есть вообще на рынке труда и при появлении новой вакансии они сразу работают по сформированному списку кандидатов, это позволяет быстрее закрывать вакансии, ну а вы оказываетесь в shortlist

про установку сети контактов думаю можно опустить, с несколькими хорошими людьми познакомился именно на собеседованиях

так что в ограниченных количествах это win-win

Missing-male
Humanoid
– java танцор в AGoGo в Тайланде

+3

а их можно читать?

я всегда думал, что с dev.by алгоритм прост: прочитал заголовок и пошёл сраться в комменты =)

Зарплаты

1500
Медиана зарплаты в ИТ за 3 месяца
ЯНВ
ФЕВ
МАР
АПР
МАЙ
ИЮН
1500
1900
1600
1500
1500
1625
Использование материалов, размещенных на сайте, разрешается при условии прямой гиперссылки на dev.by. Ссылка должна быть размещена в подзаголовке или в первом абзаце публикации.