Не согласен с «вы не знакомы с фразой это не мое дело» — умение говорить «нет» важное лидерское качество. Неумеющие говорить нет попадают в корпоративные ловушки — их перегружают и они перегорают. Примеров тьма.
Гуглить не проблема. Проблема в том, что часто люди сразу не думая бегут гуглить и находят бяку какую-нибудь и вставляют в код кое-как.
То есть если есть stackoverflow то грех им не пользоваться, но сначала надо подумать и сформулировать, а также определиться что мы ищем и в какую сторону.
То есть решать по одной схеме «гуглить — не гуглить неправильно». Иногда придется прогуглить 3 разные вещи, и из них слепить решение.
Ну у нас максимум два if. Задача Холланда, не моя.
максимум два раза можно узнать результат — это значит пробу сделать.
if (i mod 3 = 0) — опробировали 1 раз
if (i mod 3 = 0 && i mod 5 = 0) — опробировали 1 раз.
Результат первой пробы можно использовать во второй пробе.
Задача давалась Джоном Холландом отцом генетических алгоритмов, в 70-х годах.
Ключевой момент вашего решения — операция s = ""
Обычно схема fizzbuzz идет следующим образом:
1. Напишите fizzbuzz — написал в 3 if.
2. Напишите fizzbuzz в 2 if. Пишут что и вы.
3. Избавьтесь от изменения переменных. Тут продолжите свои размышления.
Если вы считаете, что в условиях 3 задача не решается — докажите что решений нет. Если решается — решите.
Неумеющий программировать — уходит на пункте 1
Умеющий программировать — решает пункт 2
Математик — решает пункт 3.
Правило следующие:
if { block } then { block } else { block}; if {block} then {block} else {block} — два if
if; if — два if
if then else if; if — недопустимо. Три if
промежуточные результаты можно сохранить в неизменяюю переменную.
Нельзя менять переменную, в вашем случае s = "" недопустимо для пункта 3.
можно вычислять любые выражения, битовые сдвиги, числа — все допустимо.
Обрамляющий цикл — классический for или while.
Еще раз условие задачи для тех кто не понял:
есть понятие пробы. Проба позволяет узнать значение.
есть if () — в скобках мы пробируем значение.
нам надо написать программу, которая:
1. если число делится на 3 выводит «fizz»
2. если число делится на 5 выводит «buzz»
3. если число делится на 3 и на 5 выводит «fizzbuzz».
4. если число не делится на 3, на 5, на 3 и на 5 НЕ выводит ни fizz, ни buzz, а выводит само число
Идея fizz buzz — проверить умение логически мыслить и читать тело задачи.
Задача решается в два if. Если число делится на 3 и на 5, значит оно делится и на 15. Написать в два if не так просто, учитывая output. Но надо сделать именно в два if (else стейтмент можно вводить).
Именно так задача давалась в оригинале.
Попробуйте решить строго в два if
У вас ошибка в расчетах. Вот вы пишете:
«Во время пилотного проекта вы обнаруживаете, что шансы не уложиться в срок для каждой из команд – около 20%. А значит шансы, что опоздает хоть кто-нибудь из них – 0.8^3=0.51»
На самом деле — представляем себе что есть не три команды, а 1 команда которая как будто работает последовательно. Делает 3 проекта подряд.
Какие будут исходы? Не будем утруждать себя формулой Бернулли:
1 раз опоздали, 2 раза не опоздали. Причем таких ситуаций аж 3.
2 раза опоздали, 1 раз не опоздали. Таких ситуаций аж 3.
3 раза опоздали. Таких ситуаций 1.
Как я провел этот анализ. Давайте подумаем наоборот. «Хоть кто-нибудь опоздает — это все равно что от 1 отнять вероятность, что никто не опоздает».
0.8 — вероятность что один не опоздает. Значит что все трое не опоздают — 0.8^3 = ваши 0.512. То есть 0.512 — это никто не опоздает. А что хоть кто-нибудь опоздает — это 0.488
Статья очень хорошая. Помните, что теорию вероятностей не так просто опровергнуть как вам кажется. Спасибо, пишите еще.
нет расслабляться вообще никогда нельзя. Просто надо всесторонне образовываться. Ну вот накодите вы кода. И кто этим кодом будет пользоваться? Вы же для кого-то кодите, надо понимать как минимум для кого и почему. Для этого нужна эмпатия и понимание чего он хочет и как он думает. А вы кодить-шкодить.
Надо никогда не расслабляться и всегда думать головой, а кодить или не кодить — это зависит от деятельности. Я вообще могу два часа ходить туда-сюда, в голове вертя систему информационную, потом сесть на стул две строчки кода написать. и вам следует действовать по этому примеру.
Ну вот теперь надеюсь до многих умников дойдет что затраты такие, что бежать в аутсорс со своей «идеей» для мобильного приложения — дело весьма убыточное.
Вам рекомендую послушать песню The Love Of Richard Nixon
Конкретно бизнес-процесс — логистическое view. Пример: покупаем карандаши. Куда отправить заявку, кто ее получит и когда, куда он побежит у кого он купит. Бизнес-процесс? Бизнес-процесс. Лучше чтобы их кто-то инженерил.
Enterprise level — это стратегия (что мы сделали, делаем и куда вообще хотим идти своей долбаной компанией) + структура предприятия.
Business Process Level — уже понятно. Логистические схемы. Что и как покупаем, продаем, сбываем производим. Все цепочки.
Infrastructure Level — маппинг людей, должностей и отделов на бизнес-процессы.
IT Infrastructure Level — информационные системы нужно выделять в отдельное view.
Financial Level — надо добавить. «токовая» модель, куда втекают денежки, куда вытекают. Чтобы мы знали что мы неубыточны своей компанией.
Так, судя по вашему анализу, видно что это все в ужасном состоянии от одной терминологии можно шею свернуть. Так этому учить совершенно нельзя. Напрудили прудов.
Вполне неплохая структурная модель дверей, турникетов и хозяев. Журнал есть, учет есть. Есть что анализировать, например, кто куда ходит или кто приходит и как уходит. Любые терки с безопасностью с переложением ответственности друг на друга и со всем прочим моментально исчезают.
По этой модели уже можно сделать реальную систему. В принципе, хорошая работа, но увы не могу сказать что это крутая структурно-инженерная модель, поскольку предметная область достаточно простая. Однако модель хорошая.
Крайне не рекомендую книгу Фридла для регулярных выражений. Она плохая, плохо написанная и имеет кучу всяких проблем. Такая же плохая как и книга Кнута.
Фактически оба уничтожили или как минимум покоробили свою индустрию — регулярные выражения заработали репутацию чего-то сложного и непонятного потому что Фридл написал ПЛОХУЮ, СЛОЖНУЮ, ОТВРАТИТЕЛЬНУЮ КНИГУ.
Из литературы на рынке мне понравилось:
Python Regular Expressions
Б.Форта Регулярные выражения за 24 часа (аж 2004 года что ли)
Неплохое введение если не ошибаюсь было в книге XSLT Дага Тидвелла
>Нам нужно принять фразу Твена так: «Решайте сложнейшие задачи в первую очередь».
Это просто greedy-приоритизация тасков. Как и всякая эвристика необязательно оптимальна. Иногда стоит попинать вола, то есть попрокрастинировать над сложнейшей задачей, иногда стоит пойти в библиотеку, иногда сначала сделать ресерч, а иногда сразу на нее кидаться. Не могу сказать как лучше.
Я считаю себя достаточно успешным человеком, утро начинаю с выкуривания сигареты.
Совершенно не согласен с тезисом, точнее согласен — но скорее этот тезис иллюстрирует убогость и однобокость мышления работодателя:
>Работодателю интересно, чтобы Вы не росли профессионально, а росли производительно >(больше однотипной ответственности).
Работодателю должно быть интересно, чтобы вы росли профессионально тогда вам можно поручать более сложные и ответственные задачи. Возможно просто ваши с работодателям представления расходятся — например, работодателю желательно чтобы вы углубились в предметную область, а вам в какую-то новую sexy-технологию. В любом случае с работодателем можно и нужно договариваться и разговаривать.
>Работодателю интересно, чтобы Вы углублялись в стек тех технологий, которые использует >он сейчас. Если стек вдруг поменяется, то лучше найти синьора с многолетнем опытом >новой технологии «Х», чем ждать пока Вы переучитесь.
Нет, не лучше. Проект не ограничивается набором какой-то технологии. Проект это и знание людей, и знание каких-то прочих технологий, и знание серверов, и знание баз данных, и знание психологических тонкостей заказчика или заказчиков. Поэтому работодателю интересно вложиться в одного человека на много лет вперед.
Хорошая девелоперская утилита, не уверен насчет Node.js может что-то по структурнее и попровереннее взять? Так в целом незакрытая ниша — сейчас каждый разработчик поднимает какой-нибудь зоопарк (HTTP Server, Database, NoSQL DB, Hadoop, etc).
Почему вы не хотите сыграть на двух уровнях сразу? Или на трех. Вы же уже дерево «предварительное» имеете. Осталось сыграть. Вот и новый алгоритм-болгаритм.
«They made a company based on my research» какое-то. Если я автор уникальной методики, я еще одну методику придумаю. А этот дурень пусть радуется. По опыту, я в свое время работал ассистентом на кафедре, но изобрел пару методик — потом писаются в штаны и прибегают и все равно отстегивают. Главное non-reaction, им страшненько становится.
«Реальное время: нити такого класса всегда вытесняют с процессора нити других классов так быстро, как это возможно»
Дмитрий, я просто предупреждаю что со времени появления защищенного режима процессоров Intel такой класс нитей исчез, условно на этом уровне работает операционная система, daemon триды там глобальные. Но вы что-то свое пилите, отказались из соображений безопасности. Чтобы нить реального времени не сломала что-то (умышленно или случайно). Просто предупреждаю, чтобы вы знали и не наступили на те же грабли, что инженеры Intel. Если вы делаете real time нити это нужно делать осознанно. Извините, пожалуйста, что несколько резкое замечание, но не мог не схватиться за маузер.
Программист-слуга и программист-хозяин — если думать именно в этих терминах, то просто, видимо, один в состоянии написать спецификацию, а другому надо написать спецификацию иначе он ни бе, ни ме. Подобное видно во всех широтах. 99,9% относятся к программистам слугам — знаем алгоритмы, знаем фреймворки, но надо чтобы пришел кто-то и сказал какой алгоритм или какой фреймворк. В лучшем случае даже не сказал точно, а обрисовал словами — и тот поймет. А хозяюшка может и выбрать сам и фрейморк и т.п. ему надо задачу поставить, а может и сам поставит себе, но такое не бывает. Я видел только одного за всю свою жизнь.
«если (p′, d′) = t(p, d), где t — трансформация, выполненная машиной, то p′(d′) = p(d)». непонятна логика здесь с т.з. математики. Давайте уберем программа и данные и введем мат.функции и вы увидете что контрпример легко построить.
То есть:
(p',d') = t(p,d) при этом p'(d')<>p(d)
Это ошибка, не знаю может в вашем случае не возникает.
«знают ли они, как сделать, чтобы программист в возрасте свыше 50 лет был бы не меньше полезен, нежели 30-летний.»
Непонятна эта фраза, у 50-летнего программиста на 20 лет больше опыта. Даже при условии сегодняшнего мирового прогресса Технологий, человек в 50 лет действительно может не знать самых новых и крутых либ (может, и не надо кстати, некоторые типа node.js).
Но +20 лет опыта это +20 лет опыта. Это опыт создания сложных систем, со всевозможными проблемами багами и прочим.
Нам наверное пора отучаться думать что «лучшему программисту 30 лет» и пытаться удерживать в программировании чем дольше тем лучше, чтобы инженерный опыт накапливался. Такие дела.
я так понимаю здесь происходит некий A/B тестинг
Users did 0.21% fewer searches, even after we
stopped injecting the delay.
Кроме того, еще наверное сильнее упадет
процент «повторного поиска» — написал, не понравилось,
еще ищет. Как-то тут непонятно.
Пример 11 Bing.com мне не нравится в силу того, что
если быстро отрисовать первый результат то это как
бы подстава пользователь видит первый результат
другие не видет и скорее всего крямкает на него.
То есть пользователя скорее принудили перейти чем
0,7% кликов больше. Но надо разбираться.
По идее варианты 2 и 3 должны быть идентичны, не думаю что разработчики оракл настолько умны что добавив лямбды переписали все заново, придумав какой-то сим салавим. Если и не идентичны, то где-то рядом. В одном случае вижу массив long[], в другом просто long. Плюс непонятно как реализованы лямбды точно. Но по идее должны быть рядом.
Ну не знаю, видимо на картинке люди закодировали ранг матрицы по количество разных цветов в строке, такое ощущение. То есть выбрать строки с максимумом различных элементов. Я почему-то глянул на столбцы и сказал что ранг 6 или 7
Вопрос — как это добро кодировать. Видимо, одинаковые число надо кодировать одинаковым цветом. Причем близкие числа нужно кодировать цветом поближе.
Проблем у существующего подхода два:
1. Это быстрая оценка, но хорошая идея.
2. Какова вычислительная сложность калибровки цветов? Такие дела, если маленькая то годидзе, если нет — то негодидзе, быстрее будет так ранг посчитать.
В принципе задача найти ранг приблизительно хорошая, например для разложений матрицы на подматрицы. Крайне душеполезно и все такое но надо поподробнее написать, а то карнеги мелон марнеги мелон
Идея хорошая и метод правильно описан. Единственное что — я бы добавил шумов в модель и попробовал взять преобразование Фурье не FFT, а DFT целиком. Еще хорошая наводка — взять три колокола разных размеров. Один колокольчик, другой побольше третий еще больше и сравнить волны и посмотреть на решение должно быть еще глуше. Тут слишком звонко звучит.
отличное упражнение написать игру пинг понг на любом языке программирования. В один тред. С AI на генеративных функциях (иногда ошибается) и с Command pattern'ом.
Хорошая задача, нормальный студент должен суметь кое-как написать.
Вот тут ныли-ныли, что они не хотят быть «мясом» и писать на го. А вот идите ка на своей скале напишите хоть пинг-понг. И покажите и поговорим тогда.
Тут дело не в моральных принципах, а в том что допустим в микровселенной могут происходить какие-нибудь безобразия вроде гомосексуализма или еще чего и ребенку такую бяку видеть не пристоило, поэтому вот они и сдали креатор сделавший разумную жизнь по гарантии потому что так нельзя.
На самом деле можно и собственно, и 40 символьные адреса брутфорснуть. Можно сидеть и для сайта строки перебирать подряд. Как правило надо посмотреть внимательно на схему url-ования и можно прокверить какой-то сайт и написать скрипд который будет кверить, дизайн в большинстве случаев url-схемы, очень простой. Такие дела.
Что такое сфера? И что такое вселенная? Если мы говорим о звездочках и планетках и карликах и всяких интересных штучках дрючках, то у нас кроме скорости света есть и гравитационные силы. Вот гравитационные волны только открыли, а они распространяться должны быстрее — мне об этом говорил зам. зав. кафедрой, когда я работал ассистентом на кафедре физической математики.
Нужно понимать что вот под капотом глубоко где-то так (вариант 2) и будет, по крайней нормальный Math-compiler именно так и сделает, но это будет работать быстрее, потому что там решили общую задачу и написали 100.000 тестов. В принципе, поэтому либы и пишутся.
Классический вариант реализуется несложной схемой из условий:
Вот такие штуки превращаются
sign_t sign0 (i32 a) {
if (a>0) return +1;
if (a<0) return -1;
return 0;
}
В вот такие штуки:
sign_t sign1 (i32 a) {
return (a >> SHIFT) | ((u32)(-a) >> SHIFT);
}
«Мы сфокусировались на нашем собственном опыте, о котором могут рассказать только разработчики Redmadrobot.»
Смотрите map: focus -> концентрироваться. По-английски говорим focus, по-русски «концентрироваться». Фокусироваться в русском языке умеют оптические приборы, а люди нет.
Статья хорошая, надо обвести в рамочку но 80 утилит требуют классификации и какого-то быстрого поиска. Не знаю, например сделать то самое web-application с тегами, рубрикатором и функцией search.
Очень странная позиция, Антон. Начнем с того, что не «берем студентов и школьников и они пилят в проекте», а «берем студентов и школьников и учим их десять лет структурам данных и алгоритмам».
Простота building blocks системы вовсе не равносильна простоте творения. Скажем, английский язык куда проще русского а писать на нем куда приятнее и выразительнее. С этим многие не согласятся, давайте съедем на программирование.
Есть язык erlang. сложный. На нем ничего не написано.
Есть язык C++. Не такой сложный, на нем многое написали. Все работает неправильно.
Есть язык Java. Очень несложный. Все работает кое-как, написали много.
Есть язык Python. Очень простой. Написали много не работает почти ничего.
Есть язык PHP. Простой. Написали много. Что-то работает.
Есть язык Delphi. Простой. В принципе работает. Но вышел из употребления.
Есть язык С. На самом деле сложный. Систем написали сложных много. Но вышел из употребления.
Есть языка Scala. Сложнее Java, проще C++. Написали в последние годы много. Не работает вообще ничего.
Есть язык Lisp. Простой. Но не имеет аппаратной поддержки. Не написали вообще ничего.
Есть язык Closure. Взяли Lisp, сделали в 100 раз сложнее и убожественнее и все равно ничего не написали.
А язык go это замена С на рынке. Возможно, даже не go а его дальнейшие эволюции.
Еще раз простота инструмента — не гарантия простоты целевой системы.
А чтобы написать с челленджами и не быть мясом нужно:
1. Иметь язык который стройно создан и имеет дизайн в своей структуре. И все как минимум базовые библиотеки в большинстве случаев работают.
2. Знать алгоритмы и структуры данных. Программа — это алгоритмы и структуры данных.
Елена Верещага адски угорела по буквам. Отвечу тоже потоком текта с минимумом абзацев. Текст написан очень хорошо но мне напомнил г-на Белковского. Так, в целом ничего. Если есть 2000-3000 таблиц нужно реинжинирить и разбираться в СУБД, Service Layer и оркестратор точно надо перебирать. Core можно условно «выкинуть» и переписать, Data Mart придется перебирать уже с учетом обратной совместимости. Primary Data Layer большая помойка туда лишь бы сгрузить. Можно сильно не менять. В тексте вы пишете что у вас кернел 20-30 таблиц в коре — это может быть правда, а может и нет, нужно разбираться и анализировать.
Процесс реинжиниринга действительно долгий, а бизнес не такой уж и динамичный раз они могут 2000-3000 таблиц хранить. Если бы бизнес был сильно динамичный то реинжиниринги стали бы давно-нормой. Так уж прям замораживать работу не стоит, но встречь предстоит много, предстоит выдергивать документацию какую можно и общаться со всеми, потому что 2000 таблиц тяжело документировать.
То что 3NF для Core — не знаю, может быть и так. Нужно подумать. Точно нужно денормализовывать Data Mart чтобы снизить нагрузки. И возможно и помойку-Primary Data Layer (скорее всего там уже денормализовано все).
Primary Data Layer работает на Write в основном, Core Read/Write, Data Mart Read. Отсюда примерный дизайн. Работы много. Мы будем сражаться и мы победим.