• Безумие и успех кода Oracle Database

      На этой неделе пользователи Hacker News решили обсудить вопрос «Каков максимальный объем плохого — но при этом работающего — кода вам доводилось видеть?» (позже к ним присоединились и пользователи Reddit). В комментариях было рассказано немало «веселых» историй про то, с чем мы все время от времени сталкиваемся; но больше всего внимания привлек рассказ про код «передовой СУБД, которую используют большинство компаний, входящих в список Fortune 100».

      Победителем в номинации «лавкрафтовские ужасы» заслуженно стал рассказ бывшего разработчика Oracle, который работал над Oracle Database в период разработки версии 12.2. Объем кодовой базы СУБД на тот момент составлял 25 миллионов строк на языке C — и стоило вам изменить лишь одну из этих строк, как ломались тысячи написанных ранее тестов.

      За прошедшие годы над кодом успело потрудиться несколько поколений программистов, которых регулярно преследовали жесткие дедлайны — и благодаря этому код смог превратиться в настоящий кошмар. Сегодня он состоит из сложных «кусков» кода, отвечающих за логику, управление памятью, переключение контекстов и многое другое; они связаны друг с другом при помощи тысяч различных флагов. Весь код связан между собой загадочным макросом, который невозможно расшифровать, не прибегая к помощи тетради, в которую приходится записывать, чем занимаются релевантные части макроса. В итоге, у разработчика может уйти день или два только на то, чтобы разобраться, чем же в действительности занимается макрос.
      Читать дальше →
    • «Монстры в играх или делаем страх разнообразным»

      • Tutorial

      Цикл статей “ монстропедия “ ч.2


      image

      Зачастую разработчики прибегают к простым решениям для создания иллюзии разнообразия противников в игре. Перекрасить монстра, поменять цвет пламени, натянуть новую шкурку на старую тварь и добавить шипов/рогов/зубов/лап, но известная фраза гласит “старого пса не научишь новым трюкам”
      Игроки хотят разнообразие игровых ситуаций, нового ощущения от игры, нового геймплея. Разработчик хочет дать это игроку, но малой кровью, в итоге игроки недовольны из-за однообразного геймплея и скучных противников, бесконечных коридоров кишок, одинаковых подземелий и монстров с одинаковым поведением, но разным внешним видом.(о лвл дизайне будут статьи)

      Вы разработчик, что делать?

      Читать дальше →
    • Важнейшие заблуждения о разработке игр

      • Translation
      Здравствуйте, коллеги.

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


      Читать дальше →
    • Все о коллекциях в Oracle

      Статья имеет довольно таки тезисный стиль. Более подробное содержание можно найти в приложенном внизу статьи видео с записью лекции по коллекциям Oracle.

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

      Таким же образом коллекции используются и в Oracle.

      Содержание статьи



      Шокирующие детали про коллекции в Oracle
      • +15
      • 200k
      • 9
    • iPhone неудобно использовать

      • Translation
      Перевод статьи канадского журналиста и писателя Джо Кларка

      Я как-то писал инструкцию для портативного модуля диагностики двигателей автомобилей Daewoo. Так что я знаю, что значит «неудобно использовать». И айфонами пользоваться неудобно.

      Два раза в автобусе на одном и том же маршруте я прямо смотреть не мог на то, как пожилые люди (в одном случае – с очками, сдвинутыми на лоб) пытались что-то читать с айфонов. Я брал у них телефоны (с их разрешения) и выводил очень хорошо спрятанный экран с выбором размера шрифта. Затем они выбирали шрифт побольше — такой, который им был нужен. В итоге они так меня благодарили, что мне было даже неловко.

      То же произошло ещё раз, позже, правда, не в автобусе,- с одним 85-летним мужчиной, также страдавшим от мелкого текста.

      Ещё один пожилой человек знал, что можно отправить текстовое сообщение на определённый телефонный номер, содержащее ID автобусной остановки, но не знал, что это наихудший из возможных способов узнать предполагаемое время прибытия автобуса, или что эти предсказания можно узнать где угодно, или что делать, если вы находитесь в незнакомом месте и не можете найти ID остановки. (Как он научился пользоваться айфоном? Он спрашивал у своей жены. А ещё он думал, что для чтения емейла можно пользоваться только приложением Gmail).
      Читать дальше →
    • Эффективные личные финансы. Простой способ

        Идея написать данную статью возникла после прочтения вышедшей на днях статьи Эффективные личные финансы. Уровень 1. В ней озвучены очень правильные мысли, но в основе лежит необходимость ведения финансового учета, который нужно вести весьма кропотливо и постоянно, а анализ проводить постфактум, когда деньги уже потрачены. Ранее я дважды делал попытки вести финансы подобным образом и мотивация кончалась уже через пару месяцев.

        В данной статье я расскажу о способе ведения финансов, который использую уже продолжительное время. Он требует меньше усилий и позволяет быстрее оценить (не)эффективность своих трат.

        Ведя бюджет описанным в статье способом можно:

        1. Ответить на вопрос «почему я неплохо зарабатываю, но в конце месяца у меня всегда ноль?»
        2. Быстро определить и устранить неэффективные траты
        3. Накопить резервный капитал
        4. Подойти вплотную к составлению капитала для инвестиций.
        Читать дальше →
      • Эффективные личные финансы. Уровень 1

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


          Читать дальше →
        • Как уехать работать на Лазурный берег и получить французский паспорт за 3 года



          Здесь я расскажу, как получить французский паспорт за 3 года, работая при этом в ИТ на Лазурном берегу. Рассказ будет основан на моем личном опыте, но это все же не описание моей биографии, потому что в моем случае многие решения были неоптимальными. Так что если вам интересен обзор ИТ рынка, зарплат и возможностей на Лазурном берегу — добро пожаловать под кат.
          Читать дальше →
        • Почему они мне не перезвонили-3, или я знаю где вы майнили прошлым летом

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

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

            Во второй, возможно, получилось показать ту бездну непонимания, которая лежит между молодой HR, и человеком, который уже в силу знакомства с такими безднами как
            Процедура ПередОткрытием(Отказ, СтандартнаяОбработка) уже видел некоторое. Статья — Почему они мне не перезвонили-2, или куда пропадают соискатели

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

            TL/DR. Будет много букв, недоказанных предположений, необоснованных теорий и в целом поток сознания. Будет много отступлений и непонятно зачем нужный список литературы к конце.
            Возможны термические эффекты и риск повреждения мебели.

            image
            Читать дальше →
          • Как украсть деньги с бесконтактной карты и Apple Pay

              Как украсть деньги с бесконтактной карты из кармана? Насколько безопасен PayPass и Apple Pay?

              В статье разбираются популярные мифы и сценарии мошенничества с бесконтактными системами оплаты на примере настоящего POS-терминала, карт PayPass/payWave и телефонов с функцией Google Pay/Apple Pay.

              Рассматриваемые темы:

              • Можно ли НА САМОМ ДЕЛЕ украсть деньги, прислонившись POS-терминалом к карману? — мы попытаемся полностью воспроизвести этот сценарий мошенничества от начала до конца, с использованием настоящего POS-терминала и платежных карт в реальных условиях.
              • В чем разница между физическими и виртуальными картами Apple Pay? — как происходит связывание физической карты и токена Apple Pay, и почему Apple Pay во много раз безопаснее обычной карты.
              • Используем аппаратный NFC-сниффер (ISO 14443A) — воспользуемся устройством HydraNFC для перехвата данных между POS-терминалом и картой. Рассмотрим, какие конфиденциальные данные можно извлечь из перехваченного трафика.
              • Разбираем протокол EMV — какими данными обменивается карта с POS-терминалом, используемый формат запросов, механизмы защиты от мошенничества и replay-атак.
              • Исследуем операции без карты (CNP, MO/TO) — в каких случаях на самом деле(!) можно украсть деньги с карты, имея только реквизиты, считанные бесконтактно, а в каких нельзя.

              Внимание!

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

              Материалы в статье представлены исключительно в ознакомительных целях. Все сцены демонстрации мошенничества инсценированы и выполнены с согласия участвующих в них лиц. Все списанные деньги с карт были возвращены их владельцам. Воровство денег с карт является уголовным преступлением и преследуется по закону.
              Читать дальше →
            • Полное руководство по правильному использованию анимации в UX

                Предлагаю вашему вниманию перевод очень крутой статьи по анимации интерфейса.
                The ultimate guide to proper use of animation in UX автора Taras Skytskyi.



                В настоящее время трудно впечатлить или даже удивить анимацией интерфейса. Она показывает взаимодействие между экранами, объясняет, как использовать приложение или просто направляет внимание пользователя. Изучая статьи об анимации, я узнал, что почти все они описывают только конкретные варианты использования или общие факты об анимации, но я не сталкивался с какой-либо статьей, где все правила, касающиеся анимации интерфейсов, были бы четко и практически описаны. Но, в этой статье я не буду писать ничего нового, я просто хочу собрать все основные принципы и правила в одном месте, так что другим дизайнерам, которые хотят запускать анимированные интерфейсы, не нужно было искать дополнительную информацию.
                Читать дальше →
              • Мой любимый файл в кодовой базе Chromium

                  Код Хромиума весьма обширен, там каждому найдётся что-то по вкусу. А я вот решил рассказать о своём любимом файле в нём (а у вас есть такой?). Этот файл отражает всё: боль, разочарование, надежду, упорство, силу воли, ответственность за чужие провалы и самопожертвование. Я иногда читаю его и плачу и проникаюсь пониманием, какая же огромная часть айсберга скрыта под водой. Это, в общем, даже не файл с кодом. Это файл с конфигом, описывающим баги видеокарт, которые Хромиуму приходится обходить для нормального отображения своих страниц на разных платформах. Вот он: https://cs.chromium.org/chromium/src/gpu/config/gpu_driver_bug_list.json

                  О чём вообще идёт речь? Давайте вспомним, как работает браузер: вы набираете какой-то адрес в адресной строке, браузер загружает контент и отображает его. Чуть детальнее об этом рассказывает хорошая статья «What happens when you type google.com into your browser and press enter?» (и сразу несколько её переводов на Хабре). В ней одним из последних пунктов упоминается, мол, «а теперь, когда всё готово, отрисовываем картинку на экране». Ага, вот так берём и отрисовываем, конечно.
                  Читать дальше →
                • Проще, чем кажется. Глава 11

                    «Проще, чем кажется» — бизнес-роман о том, на что еще способны программисты.


                    Таня молчала уже почти час. Смотрела в окно, на проносящиеся мимо поля и леса, укрытые свежим снегом. Вчера подморозило, и снег искрился так, что больно было смотреть – спасали только поляризационные очки.

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

                    О своем новом проекте он рассказал еще накануне. Таня, как это водится у лучшей половины человечества, молча выслушала и сказала: «Ясно». Ясно тебе – думал Сергей.

                    С одной стороны, вроде такого ответа достаточно. Не хочешь вникать, обсуждать, предлагать, высказываться – ради Бога, сиди молчи. Но ведь понятно, со стопроцентной вероятностью, что Тане есть что сказать. Как быть?
                    Читать дальше →
                  • Иерархические (рекурсивные) запросы

                      Дерево объектов

                      Чтобы понять рекурсию, сначала надо понять рекурсию. Возможно, поэтому рекурсивные запросы применяют так редко. Наверняка вы представляете что такое SQL-запрос, я расскажу, чем рекурсивные запросы отличаются от обычных. Тема получилась объемная, приготовьтесь к долгому чтению. В основном речь пойдет об Oracle, но упоминаются и другие СУБД.

                      Читать дальше →
                    • Разбираем XML средствами Oracle database

                      Казалось бы, зачем вообще может возникнуть необходимость разбирать XML на стороне БД?

                      Но на то может быть много причин, и у каждого они могут быть своими. Некоторых, и меня в том числе, вовсе не гнушает реализация прикладной логики средствами БД, а кому-то это кажется архаичным пережитком и полезность инструментария для работы с XML в СУБД, таким людям может показаться сомнительной. Однако, полагаю, мало кто станет возражать в полезности наличия такой возможности на этапе эксплуатации приложения. К примеру — не приняло у нас приложение прайс-лист оптовика — сумбурно выругалось на отсутствие перекодировки по каким-то позициям. Более 20к позиций в XML — поди там разберись, где собака порылась, что конкретно смутило приложение. Согласитесь, ведь тут здорово было бы иметь возможность представить список товаров, перечисленных в XML в виде набора данных, который можно соединить с перекодировочной таблицей, чтобы выявить одним махом все позиции, не имеющие перекодировки? И подобных примеров может быть приведено множество. Мне доводилось заниматься поддержкой приложения, интегрирующегося с внешними системами посредством обмена XML сообщений, и, не смотря на то, что приложение самостоятельно не использовало предоставляемый Oracle инструментарий, он оказался и весьма кстати мне и моим коллегам при поддержке этого продукта.

                      В этой статье я хотел бы продемонстрировать на сколько легко и непринужденно можно разобрать XML различной степени сложности используя инструментальные средства Oracle Database.
                      Читать дальше →
                    • Как подготовиться к собеседованию в Google и не пройти его. Дважды



                        Заголовок статьи звучит как epic fail, но на самом деле все не так однозначно. Да и в общем и целом эта история закончилась весьма позитивно, хоть и не в Google. Но это уже тема для другой статьи. В этой же статье я расскажу о трех вещах: каким образом проходил мой процесс подготовки, каким образом проходили интервью в Google и почему же на мой взгляд все не так однозначно, как может показаться.
                        Кому интересно, прошу под кат.
                      • Создание ИИ методом «глокой куздры». Интеллектуальная одиссея

                          Захотелось мне написать разговаривающую программу. Очень захотелось, позарез.

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

                          Знакомьтесь, Ваня Разумный.


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

                          По поводу результата оговорюсь сразу: целью был не программный код, а формулировка принципов искусственного мышления, функционирующего НЕ на основе физической реальности, как биологические организмы, а на основе СИНТАКСИСА. Поклонники теста Тьюринга, нейронных сетей и машинного обучения могут не беспокоиться.

                          Внимание, материал объемный.
                          Читать дальше →
                        • «Я бесполезный дурак и хочу уволиться» — 10 вопросов программисту, пилотный выпуск



                            Привет, Хабр!

                            Помните историю про Стива Джобса и Денниса Ритчи? Не хотим снова устраивать споры и читать морали, но правда остается правдой — тысячи крутых технарей сидят в тени, а их истории запрятаны в чулан.

                            Мы в редакции Хабра намерены это исправлять. Отныне будем регулярно брать интервью у людей, про которых не пишут в СМИ и за которыми не гоняются в соцсетях. Так что если вам есть что о себе рассказать — готовьтесь.

                            Чтобы вы поняли, как оно будет выглядеть, начнем со своего примера. Под катом 10 общих вопросов, которые мы будем задавать всем. Для пилота на них ответил fillpackart. (В этом месяце я брал вместе с ним несколько, кажется, неплохих интервью: раз, два, три). Почитайте, и если хотите рассказать о себе таким же образом, пишите сообщения мне или baragol.
                            Читать дальше →
                          • Выходим на уровень эксперта! 50 оттенков экзамена 1Z0-047 (сертификация Oracle Database SQL Certified Expert)

                            Всем привет! В этой статье пойдет речь об одной из базовых сертификаций от ORACLE — Oracle Database SQL Certified Expert.

                            image

                            Чтобы получить сертификат, нужно сдать экзамен 1Z0-047.
                            Читать дальше →
                          • Создаем 2D игру на Python с библиотекой Arcade

                              Всем привет!

                              Мы продолжаем делится с вами интересными найденными вещами про питончик. Сегодня вот решили разобраться с 2D играми. Это, конечно, немного попроще, чем то, что проходят у нас на курсе «Разработчик Python», но не менее интересно это уж точно.

                              ПЕРЕВОД
                              Оригинал статьи — opensource.com/article/18/4/easy-2d-game-creation-python-and-arcade
                              Автор — Paul Vincent Craven


                              Поехали.

                              Python — выдающийся язык для начинающих изучать программирование. Он также идеально подходит тем, кто хочет “просто взять и сделать”, а не тратить кучу времени на шаблонный код. Arcade — библиотека Python для создания 2D игр, с низким порогом вхождения, но очень функциональная в опытных руках. В этом статье я объясню, как начать использовать Python и Arcade для программирования игр.

                              Я начал разрабатывать на Arcade после преподавания азов библиотеки PyGame студентам. Я очно преподавал PyGames в течение почти 10 лет, а также разработал ProgramArcadeGames.com для обучения онлайн. PyGames отличная, но в какой-то момент я понял, что устал тратить время на оправдание багов, которые никогда не фиксятся.

                              Меня беспокоило преподавание таких вещей, как событийный цикл, которым уже почти не пользовались. И был целый раздел, в котором я объяснял, почему y-координаты повернуты в противоположном направлении. PyGames обновлялась редко и базировалась на старой библиотеке SDL 1, а не чем-то более современном вроде OpenGL. На светлое будущее я не рассчитывал.

                              В моих мечтах была простая и мощная библиотека, которая бы использовала новые фичи Python 3, например, декораторы и тайп-хинтинг. Ей оказалась Arcade. Посмотрим, как начать ее использовать.

                              Читать дальше →