Обновить
31
0
Антон Куранов @Throwable

Пользователь

Отправить сообщение
Представьте себе, что Ваш продукт у Вас купили за 600 рублей, а перепродали мне за 600 долларов. В итоге кого я вознаградил: Вас или предприимчивого дядю? Примерно так и работает сейчас рынок. Основную долю дохода гребут посредники (лейблы, сети сбыта и прочие аггрегаторы), влезшие между производителем и потребителем. Из основная работа — втюхать мне продукт. И за это я должен им еще должен переплачивать.
> файл закончился (reader поднимает исключение)
В данном случае обычной практикой является возвратить значение -1, если символ не найден:

int FindSymbol(TextReader reader, char symb)

И вот почему:

for ( int i = findSymbol( r, 'a' ); i >= 0; i-- ) {
doSomethingWithTheseSymbols( i );
}

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

P.S. тут недавно проходил обзор языка Go, и того извращения, которое они придумали вместо эксепшнов…
В таком случае самое время завести базу неблагонадежных компаний и организаций, где сажали сисадминов. Как идея для стартапа.
Впринципе покупка логична. Скайп достиг своего потолка. Чтобы перепрыгнуть порог, ему нужно выходить на рынок телекоммуникаций, что под силу только крупным компаниям типа Microsoft и Google. Кстати, Google уже пыталась сунуться на этот рынок и получила по носу — моментально посыпались различные иски, СМИ начали нагнетать антигугловскую волну и т.д. За этим стояли именно телекомы. Microsoft более лояльна к рынку телекомов, и до сих пор не совалась в занятые ниши. Однако нынешняя покупка позволит по-другому посмотреть на переспективы компании. 8.5 миллиардов потрачены не ради престижа — M$ явно хочет продавать сервис. Как только она об этом заикнется — в Европе сразу последует серия антимайкросовтовских настроений.
Сделать релиз — это только первая ступень. Сделать там, чтобы проект вышел на уровень автономности (т.е. не генерил расходов и не требовал финансовой пуповины извне) уже сложнее. На этом заваливается большинство. Третий этап — смочь отбить эти $20000 в прибылях. Если несмотря на потуги, не получается — надо иметь силу воли оставить проект и заняться другими идеями — тщетно пытаться реанимировать мертвеца. Те, кто этого не понимает подсаживаются на инвесторную иглу и в итоге очень быстро теряют контроль. Четвертый этап — это уже полная автономность проекта, когда проект уже не держится на энтузиазме, но обеспечивает зарплату всей команде. И уже пятый этап — это обеспечение постоянного роста и развития проекта, когда есть возможность нанять людей. Только здесь возможно повторное привлечение капитала извне. И только уже потом мечты о Поршике и лаврах Цукенберга. Аццкий труд, я Вам скажу! В любом случае удачи!

Что касается статьи, бизнес в России — это отдельная история. Касается не только инвестиций в стартапы.
По-моему Lift щедро наградили краткостью написания в ущерб читаемости. Практически за каждой строчкой кода нужно лезть в API за разъяснением. Хотя может быть это только мое первое впечатление.
Интересная была бы идея сделать GWT wrapper Scala. Проект есть, но по ходу он уже 2 года в состоянии обсуждения идей.
Насчет стратегий. Автор не видит очевидного. Стратегии всего две, и они повсюду встречаются в животном мире: количество и качество. Некоторые виды оставляют большое потомство, абсолютно не заботясь о нет. Соответственно у потомков большая смертность и меньше шансов воспроизводства. Другие же наоборот, при меньшем количестве потомства бОльше заботятся о его безопасности. Человек использует одновременно обе эти стратегии, причем как мужчины, так и женщины. Видимо в определенные периоды истории успешной становится та или иная стратегия, но другая при этом полностью не исчезает. И ЧСХ, чем угнетенней чувствует себя человек, тем больше его стратегия размножения сбивается в сторону заботы при малочисленном потомстве. В итоге меньше всего размножается самый угнетенный класс современного общества — класс со средним доходом. Если же рассматривать средние показатели по странам, то ситуация встает на место — больше размножаются страны с меньшим доходом на душу населения.

> На наскальных рисунках нет порнографических изображений. Даже обнажённость в той же античности не воспринималась
Верно замечено, но не совсем так. Порнография связана исключительно с темой запрета на секс, а также социальным табу на проявления сексуальности. То, что подавляется: «грязные» желания, «непристойные» мечты — находит выход в порнографии. У древних ввиду отсутствия табу проявления сексуальности принимали более натуральный характер. Насчет искусства Вы не правы: сексуальность в искусстве древних — отдельный пласт культуры, который не сильно демонстровался западному человеку ввиду все тех же запретов.
Есть много споров на тему, нужно ли обязывать пользователя контролировать исключения try-catch блоком, или же делать это по усмотрению. Преимущество первых даже не в том, что обязует пользователя сразу писать безопасный код, а в том, что пользователь видит сразу все типы исключений, выбрасываемых всей цепочкой функций.
Не знаю как для Пайка, но для меня try-catch-finally блок имеет гораздо более понятную и логичную структуру, чем defer: код, который идет ниже, выполняется всегда позже; тогда как выполнение defer скачет. Вообще в Go создает впечатление некоего компилируемого скриптового языка, нежели современногоязыка программирования.
Чтож, в таком случае остается только самому написать заяву в ментуру о том, что на работе заставляют совержать правонарушение с угрозой увольнения. И попросить разобраться. Копию заявления с печатью оставить себе.
Все проще. Не надо делать ничего такого, чего не делают другие. И не надо стесняться своей личной жизни. Качаете торренты — все качают. Смотрите порнушку — все ее смотрят. Будьте готовы, что в интернетах ограничение доступа — не более, чем формальность.
Если ответственность несет гендир, тогда почему сажают в основном сисадминов? И тогда не понимаю, почему не сработает это:

«Довожу до Вашего сведения, что мной обнаружено установленное на вверенных мне компьютерах X,Y,Z следующее нелицензиоонное ПО: 1. ,2. ,3.… Согласно законодательству РФ необходимо прекратить использование этих программ во избежании преследования по факту нарушения. В xx:yy я намерен произвести процедуру дезинсталляции вышеперечисленных программ. Если данная процедура затронет работу компании, прошу Вас сообщить мне сообщить мне в письменной форме о невозможности ее проведения, либо указать альтернативное решение проблемы».

Дата, подпись, штамп

— Обнаружено было
— Устанавливал не я
— Была попытка нормализовать ситуацию
— Гендир оповещен
— На руках имеется письменный отказ гендира от проведения
Отвечает полностью гендир.
Для полного понимания ситуации дополните пожалуйста отчет статистикой:
— Должности осужденных (сисадмин, программист, бухгалтер, директор, etc...)
— Род деятельности осужденной организации: госструктура, фирма связанная с разработкой и сбытом ПО, другие организации.

И еще такой вопрос: если служебные записки не действительны, как поступать в случае, если Вас взяли на работу, а Вы обнаружили установленное пиратское ПО, или ПО, которого нет на балансе?
AA, AB, AC, AD,… ,BA, BB, BC, etc… )))
Делов-то. Пусть помечают этажи в отеле латинскими буквами (уровни). Их звучание вряд ли совпадет хотя бы с одним с китайским словом ;)))
Кстати, кому не нравится дефолтный Unity могут быть очень полезными рецепты:
www.webupd8.org/2011/04/things-to-tweak-fix-after-installing.html
Не понравилось. С точки зрения usability стало хуже.

— Хочу сразу видеть меню с установленынми программами. И не хочу вводить ее имя руками. Также не хочу делать 3 клика (с выскакивающим комбо) чтобы добраться до нужной секции. Кстати, непонятна кнопка «More Apps» и почему она стоит внизу.
— Каждый раз показываемые в ланчере рекомендуемые программы для установки бесполезны в 99.9% случаев.
— Зафиксируйте уже сраный ланчбар. Каждый раз, когда я хочу переключить я должен сначала ждать, пока выедет эта сраная панель, затем внимательно искать где же находится иконка нужной апликации.
— Удобство меню программы вверху экрана более чем спорно. Возможно подойдет для нетбуков, где разрешение маленькое и программы работают преимущественно в фулскрин. Пробовали GIMP с таким меню?
— Скролы интересны, но так, как они работают, они неудобны.
— Общая недопиленность. Не очень дружит с Gnome темами, настроек практически нет.

Вобщем, не для людей. Кстати, ранние сборки Unity были гораздо лучше. Если не вернут нормальный Gnome, Ubintu потеряет пользователей из числа людей.
Дело не столько в коде, сколько в модели данных. Одни и те же структуры данных могут использоваться одновременно сервером и клиентом, а также передаваться по сети.
Сейчас тоже активно занимаюсь поиском фреймворка для Canvas. На данный момент лучшее, что удалось найти:
raphaeljs.com/
easeljs.com/
Однако, как автор правильно заметил, сильно нехватает декларативной объектной модели типа SceneGraph (после Flash и JavaFX рисование «вручную» выглядит несерьезно).
Добавлю от себя:
> Соединение не пересылающее никаких данных закрывается через определенный промежуток времени.

Причем в этом случае ни клиент ни сервер не получают нотификации и остаются висеть на Socket.read(). Время idle-таймаута зависит от настроек роутеров.

> Соединение не пересылающее никаких данных может превратиться в черную дыру (black hole), которая проявляется таким образом, что вы посылаете сообщения, они успешно уходят

Не совсем так. Посылаемые сообщения ставятся в WriteBuffer. Если данные успешно не отправились за время socket timeout (по дефолту 20-30 секунд на разных ОС), то возникает exception. Успешная отправка означает, что для отправляемых фреймов пришло TCP-подтверждение (т.е. данные успешно получены другой стороной). Именно запись данных в сокет гарантирует проверку состояния соединения (хотя и не сразу).

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

— Если одна из сторон оборвала соединение, то вовсе не обязательно, что об этом узнает другая (одна из основных ошибок). Если вы просто отключите роутер или выдерните сетевой кабель, то апликация продолжит висеть на Socket.read(). Даже если сетевой интерфейс упал, апликация не получит уведомления в виде эксепшна (странное довольно поведение). И так будет до тех пор, пока вы не сделаете write().

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

Для этого есть стандартный механизм — установить SO_KEEPALIVE. Сокеты будут обмениваться служебными пакетами прозрачно для логики апликации. К сожалению, в Java нет возможности установить время SO_KEEPALIVE (берется дефолтное для операционки, которое по RFC должно быть не менее 2х часов, что естественно много). Поэтому ping с обеих сторон будет наилучшим решением. Причем ответный pong реализовывать не обязательно. Сокет закроется сам, если доставить сообщение невозможно. Манипулируя SocketTimeout можно добиться желаемой точности.

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

И еще одно. Если Вы пытаетесь сделать соединение comet или websocket через HTTP, и будете использовать это для «широкого клиента», то добро пожаловать в ад. 90% клиентов выходят через proxy, которые могут творить с http-траффиком все, что им угодно. Мало будет использовать comet-библиотеку с heartbeat-ом. Необходимо будет писать свой адаптивный леер, который подбирает доступные методы соединения и настройки. И главное — это обеспечить прозрачный автоматический reconnect при обрыве соединения.
> Общее адресное пространство для всех программ имхо убивает безопасность.

Нет. Посмотрите Singularity. В той же JVM в одном процессе могут работать изолированно разные апликации (основа J2EE). Все дело в том, что загружаемый код предварительно проходит валидацию на корректность, и таким образом искусственно отсекается невалидные операции с памятью. В Singularity вообще предлагают все выполнять в нулевом кольце защиты как один процесс.

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

По-моему. DZ делает для себя открытие велосипеда. Он не понимает или не видит современные тенденции развития ПО. В качестве модели того, что должна предоставлять операционка:
— Software Transactional Memory — граф объектов с транзакционным доступом. Вся память делится на репозитории, каждый из которых представляет собой граф объектов. Для доступа к каждому репозиторию извне используется SPI (Service Provider Interface), а ссылки действительны исключительно внутри графа. Persistence графа делается прозрачно внутри SPI по мере необходимости.
— Асинхронную модель параллельной обработки на базе Actors. Отказаться от тредов и процессов как таковых, ибо они лимитированы и плохо параллелятся.
— Единый Registry объектов и сервисов.
— Transport SPIs — сервисы приема-передачи данных.

А DZ зациклен на том, как посчитать сцылки и сделать вечными программы.

Информация

В рейтинге
Не участвует
Откуда
Madrid, Испания
Зарегистрирован
Активность