Например, calcsoft.ru/skolko-vesit-kamaz — несколько таблиц как раз на заданную тему показывают, что отношение массы автомобилей КамАЗ к их грузоподъемности составляет величину около 2.0
Точнее, надо не «младше» и не «старше», а «выше» или «новее».
А то непонятно — более новые версии младше по возрасту, а более старые версии имеют меньшие номера.
В описание фич библиотеки Volley закралась незначительная ошибка.
Выражение «Cancellation request API» надо перевести не как «Отмена API запросов», а как «API отмены запроса», или «Программный интерфейс для отмены запросов»
А в целом — статья замечательная и очень полезная, спасибо!
По-моему, вы путаете понятия.
Знать, что такое мороженое и что такое шоколад, еще не означает знать свои желания и предпочтения. К примеру, я прекрасно знаю, что такое мороженое и шоколад, но иногда задумываюсь над вопросом, хочу ли я чего-то из них в настоящую минуту.
Я привел известное выражение Энштейна в ответ на вашу фразу «напишите мне», так как она близка по смыслу к вашему утверждению, хотя, конечно, и не является равнозначной. Утверждение Энштейна является более общим, чем ваше, и включает в себя ваше как частный случай. Ведь «объяснить шестилетнему ребенку» — задача более трудная, чем просто «написать». Эйнштейн утверждает, что если человек в чем-то разобрался, то он в состоянии объяснить это шестилетнему ребенку. И уж конечно, он в состоянии это написать (если только для этого нет технических препятствий :-)
Когда клиент точно знает, чего он хочет, он может не только написать это вам, разработчику со стажем, но и объяснить это шестилетнему ребенку (так считал великий физик, и я не берусь ему возражать).
К сожалению, такие клиенты встречаются крайне редко. Наверное, это потому, что такие клиенты обычно вообще не нуждаются в помощи разработчика :-)
Капля дёгтя: суточный лимит для бесплатных сообщений — не 60, а всего 5 штук в день:
Бесплатные СМС:
√ На собственный номер — для программистов, которые отправляют себе оповещения из своих программ *
* Сообщения на собственный номер бесплатны до 5 СМС в день при условии, что каждое сообщение помещается в 1 СМС (до 70 русских / 160 латинских символов). При превышении этих лимитов, сообщения оплачиваются согласно тарифу.
«Если человек не может написать то, что ему нужно — он не знает, что ему нужно» — так я всегда говорю открыто клиентам и это работает, это задевает человека и он идет на принцип (если эту фразу до меня сказал кто то еще напишите мне).
Отвечаю цитатой:
«Если ты не можешь объяснить что-то шестилетнему ребенку, то ты сам этого не знаешь.»
Автору статьи несомненно понравится система именования функций, принятая в OpenGL :-)
Там одна и та же по сути функция может иметь несколько реализаций, отличающихся количеством и типом переменных, и это отражается в суффиксе имени функции.
Фактически примерно так же реализуется перегрузка функций в C++ — в obj-файл они попадают с подобными суффиксами, невидимыми в коде на C++. Но программисту не приходится заморачиваться этим синтаксисом, подбор подходящей функции из набора одноименных реализаций происходит автоматически на этапе компиляции.
Что до меня — мне больше нравится, как это сделано в C++
По-моему, критерием для объявления виртуального деструктора должно быть не наличие виртуальных функций (кстати, они могут появиться позже, когда никто не подумает о виртуальности деструктора), а сама возможность порождения дочерних классов от данного класса.
Я попробовал собрать расширение для php 5.4.7 для Win32 (xampp) по этим инструкциям — и у меня получилось! Автору — спасибо!!! :-)
Только по дороге пришлось споткнуться о несколько камушков, хочу поделиться для автора и тех, кто захочет повторить мой эксперимент:
1. батника configure.bat изначально нет, он собирается другим батником — buildconf.bat, который требует наличия утилиты bison.exe (которая вроде бы должна находиться в папке %WINDIR%\system32\, но мне пришлось скачать ее отсюда: www.freewareweb.com/download/?f=bison.exe)
2. Директива #define PHP_COMPILER_ID «VC9» не помогает, так как после нее стоит директива #include «zend_config.w32.h», переопределяющая макрос PHP_COMPILER_ID в значение «VC10» (у меня используется именно такой компилятор) — мне пришлось еще закомментировать эту директиву в сгенерированном файле config.w32.h
3. проверять работоспособность расширения надо не командой php -r «test();» как рекомендует автор, а командой php -r «echo test();» — авторский вариант ничего никуда не выводит
Термин «роботехника» ввел Айзек Азимов вместе с ее тремя законами. Писатель-фантаст разработал свои «Три закона роботехники», которые потом легли в основу разработок модели поведения искуственного интеллекта. Из уважения к гению писателя можно сохранить и его вариант спорного термина.
Я молодым программерам рассказываю такую байку о смене тенденций в программировании:
— в 80-е годы главное требование к программам было в малом размере кода
Код программы должен был занимать как можно меньше памяти, чтобы оставить место для данных и в сумме с ними не вылезти за те 500 кБ, что оставалось после загрузки DOS
— в 90-е годы главное требование к программам было в высокой скорости работы кода
Гонка процессоров уже шла полным ходом, хорошая программа должна была уметь не «тормозить» и работать быстрее, чем юзер нажимает на кнопки
— в нашем веке главное требование к программам стало в высокой гибкости кода
Требования к программе меняются быстрее, чем идет ее разработка и внедрение, текучка кадров приводит к тому, что программист часто работает с чужим кодом, и поэтому он должен быть легко читаемым и быстро модифицируемым.
Так что переписывание старого кода — не блажь, а необходимость. А «преждевременная оптимизация» — это нормально, если в более спокойные периоды программист тратит время на то, чтобы сэкономить его потом, когда будет срочная работа.
Мозг распознает образы методом сравнения с образцом, поэтому чем дальше уходят буквы от своих мест, тем сильнее искажения.
Возможности слуха тоже ограничены, мозг не может слышать «бесконечное число частот», так как сложный гармонический сигнал разлагается в спектр при помощи улитки, в которой есть мембраны разного размера. Каждая мембрана резонирует на определенной частоте, и амплитуда этой частотной составляющей определяется по интенсивности сигнала от связанных с этой мембраной рецепторов.
Я говорю о серийно выпускаемом системном программном обеспечении (когда конечный пользователь заранее неизвестен).
>> И у кого в таком случае есть опыт построения действительно безопасных продуктов? И какие продукты вы имеете в виду?
Согласен, с хорошими примерами туговато :-)
Я могу ошибаться, но лет 10-15 назад считалась достаточно устойчивой операционная система HP-UX, я работал тогда на Казахстанской валютно-фондовой бирже, у нас был сервер T-500 и нам очень нравилось, как там все было сделано в плане безопасности и отказоустойчивости.
Но даже если в наше время никто не может похвастать хорошими решениями, то все равно некрасиво ругать других, когда сам — не лучше.
Первые же взятые наугад несколько ссылок в гугле опровергают основной постулат данной статьи: www.google.com/search?q=вес+и+грузоподъемность
Например, calcsoft.ru/skolko-vesit-kamaz — несколько таблиц как раз на заданную тему показывают, что отношение массы автомобилей КамАЗ к их грузоподъемности составляет величину около 2.0
А то непонятно — более новые версии младше по возрасту, а более старые версии имеют меньшие номера.
Выражение «Cancellation request API» надо перевести не как «Отмена API запросов», а как «API отмены запроса», или «Программный интерфейс для отмены запросов»
А в целом — статья замечательная и очень полезная, спасибо!
Знать, что такое мороженое и что такое шоколад, еще не означает знать свои желания и предпочтения. К примеру, я прекрасно знаю, что такое мороженое и шоколад, но иногда задумываюсь над вопросом, хочу ли я чего-то из них в настоящую минуту.
Я привел известное выражение Энштейна в ответ на вашу фразу «напишите мне», так как она близка по смыслу к вашему утверждению, хотя, конечно, и не является равнозначной. Утверждение Энштейна является более общим, чем ваше, и включает в себя ваше как частный случай. Ведь «объяснить шестилетнему ребенку» — задача более трудная, чем просто «написать». Эйнштейн утверждает, что если человек в чем-то разобрался, то он в состоянии объяснить это шестилетнему ребенку. И уж конечно, он в состоянии это написать (если только для этого нет технических препятствий :-)
Когда клиент точно знает, чего он хочет, он может не только написать это вам, разработчику со стажем, но и объяснить это шестилетнему ребенку (так считал великий физик, и я не берусь ему возражать).
К сожалению, такие клиенты встречаются крайне редко. Наверное, это потому, что такие клиенты обычно вообще не нуждаются в помощи разработчика :-)
Поэтому, когда я предполагаю, что у нового класса могут в будущем появиться полиморфные потомки, я обычно сразу делаю деструктор виртуальным.
Капля дёгтя: суточный лимит для бесплатных сообщений — не 60, а всего 5 штук в день:
Бесплатные СМС:
√ На собственный номер — для программистов, которые отправляют себе оповещения из своих программ *
* Сообщения на собственный номер бесплатны до 5 СМС в день при условии, что каждое сообщение помещается в 1 СМС (до 70 русских / 160 латинских символов). При превышении этих лимитов, сообщения оплачиваются согласно тарифу.
«Если человек не может написать то, что ему нужно — он не знает, что ему нужно» — так я всегда говорю открыто клиентам и это работает, это задевает человека и он идет на принцип (если эту фразу до меня сказал кто то еще напишите мне).
Отвечаю цитатой:
«Если ты не можешь объяснить что-то шестилетнему ребенку, то ты сам этого не знаешь.»
А. Эйнштейн
Там одна и та же по сути функция может иметь несколько реализаций, отличающихся количеством и типом переменных, и это отражается в суффиксе имени функции.
www.rsdn.ru/article/opengl/ogltut2.xml#EBF
Фактически примерно так же реализуется перегрузка функций в C++ — в obj-файл они попадают с подобными суффиксами, невидимыми в коде на C++. Но программисту не приходится заморачиваться этим синтаксисом, подбор подходящей функции из набора одноименных реализаций происходит автоматически на этапе компиляции.
Что до меня — мне больше нравится, как это сделано в C++
Только по дороге пришлось споткнуться о несколько камушков, хочу поделиться для автора и тех, кто захочет повторить мой эксперимент:
1. батника configure.bat изначально нет, он собирается другим батником — buildconf.bat, который требует наличия утилиты bison.exe (которая вроде бы должна находиться в папке %WINDIR%\system32\, но мне пришлось скачать ее отсюда: www.freewareweb.com/download/?f=bison.exe)
2. Директива #define PHP_COMPILER_ID «VC9» не помогает, так как после нее стоит директива #include «zend_config.w32.h», переопределяющая макрос PHP_COMPILER_ID в значение «VC10» (у меня используется именно такой компилятор) — мне пришлось еще закомментировать эту директиву в сгенерированном файле config.w32.h
3. проверять работоспособность расширения надо не командой php -r «test();» как рекомендует автор, а командой php -r «echo test();» — авторский вариант ничего никуда не выводит
«А я вот решила...»
Не знаю, сколько женщин на хабре — но читать толковый и полезный пост, подписанный женщиной, было вдвойне приятно :-)
… и пусть меня «минусуют» за этот оффтопик, но присутствие женщин облагораживает любую мужскую компанию :-)
Oracle не делает разницы между IS и AS,
но мне кажется читабельнее такой вариант:
CREATE TYPE id_list AS TABLE OF INTEGER;
Я молодым программерам рассказываю такую байку о смене тенденций в программировании:
— в 80-е годы главное требование к программам было в малом размере кода
Код программы должен был занимать как можно меньше памяти, чтобы оставить место для данных и в сумме с ними не вылезти за те 500 кБ, что оставалось после загрузки DOS
— в 90-е годы главное требование к программам было в высокой скорости работы кода
Гонка процессоров уже шла полным ходом, хорошая программа должна была уметь не «тормозить» и работать быстрее, чем юзер нажимает на кнопки
— в нашем веке главное требование к программам стало в высокой гибкости кода
Требования к программе меняются быстрее, чем идет ее разработка и внедрение, текучка кадров приводит к тому, что программист часто работает с чужим кодом, и поэтому он должен быть легко читаемым и быстро модифицируемым.
Так что переписывание старого кода — не блажь, а необходимость. А «преждевременная оптимизация» — это нормально, если в более спокойные периоды программист тратит время на то, чтобы сэкономить его потом, когда будет срочная работа.
Возможности слуха тоже ограничены, мозг не может слышать «бесконечное число частот», так как сложный гармонический сигнал разлагается в спектр при помощи улитки, в которой есть мембраны разного размера. Каждая мембрана резонирует на определенной частоте, и амплитуда этой частотной составляющей определяется по интенсивности сигнала от связанных с этой мембраной рецепторов.
Я говорю о серийно выпускаемом системном программном обеспечении (когда конечный пользователь заранее неизвестен).
>> И у кого в таком случае есть опыт построения действительно безопасных продуктов? И какие продукты вы имеете в виду?
Согласен, с хорошими примерами туговато :-)
Я могу ошибаться, но лет 10-15 назад считалась достаточно устойчивой операционная система HP-UX, я работал тогда на Казахстанской валютно-фондовой бирже, у нас был сервер T-500 и нам очень нравилось, как там все было сделано в плане безопасности и отказоустойчивости.
Но даже если в наше время никто не может похвастать хорошими решениями, то все равно некрасиво ругать других, когда сам — не лучше.
Кто в армии служил, тот в цирке не смеется.
Чувство юмора там надолго отбивают :-)