Рубрика «Программирование» - 214

Подборка @pythonetc, ноябрь 2019 - 1

Новая подборка советов про Python и программирование из моего авторского канала @pythonetc.

← Previous publications

Подборка @pythonetc, ноябрь 2019 - 2

PATH — это переменная окружения, в которой хранятся пути, по которым ищутся исполняемые файлы. Когда вы просите оболочку выполнить ls, она сначала ищет исполняемый файл ls по всем путям, указанным в PATH.
Читать полностью »

Tips and tricks from my Telegram-channel @pythonetc, November 2019 - 1

Tips and tricks from my Telegram-channel @pythonetc, November 2019

It is a new selection of tips and tricks about Python and programming from my Telegram-channel @pythonetc.

← Previous publications.

Tips and tricks from my Telegram-channel @pythonetc, November 2019 - 2

PATH is an environment variable that stores paths where executables are looked for. When you ask your shell to run ls, the shell looks for the ls executable file across all paths that are presented in PATH.
Читать полностью »

Пишем Grafana reverse proxy на Go - 1

Очень хотелось назвать статью «Proxy-сервис на Go в 3 строчки», но я выше этого.

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

proxy := httputil.NewSingleHostReverseProxy(url)
r.Header.Set(header, value)
proxy.ServeHTTP(w, r)

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

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

Читать полностью »

Скомпилируем простенькую программу выводящую "Hello World" и пройдемся по его структуре

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

На самом деле, это не так сложно. Достаточно использовать инструмент javap из JDK и рассмотреть дизассемблированный код.

А мы приступим к разбору самой структуры байт-кода для JVM

Читать полностью »

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

Здесь мы рассмотрим несколько "улучшений", отклонённых из-за непонимания тонкостей спецификации языка, неочевидных угловых случаев и других причин. Поехали!

Читать полностью »

  1. Mall Customers Dataset — данные посетителей магазина: id, пол, возраст, доход, рейтинг трат. (Вариант применения: Customer Segmentation Project with Machine Learning)
  2. Iris Dataset — датасет для новичков, содержащий размеры чашелистиков и лепестков для различных цветков.
  3. MNIST Dataset — датасет рукописных цифр. 60 000 тренировочных изображений и 10 000 тестовых изображений.
  4. The Boston Housing DatasetЧитать полностью »

Привет! Представляю вашему вниманию перевод статьи "5 Hidden Secrets in Java" автора Justin Albano.

Хотите стать джедаем Java? Раскройте древние секреты Java. Мы сосредоточимся на расширении аннотаций, инициализации, на комментариях и интерфейсах enum.

По мере развития языков программирования начинают появляться и скрытые функции, а конструкции, о которых никогда не задумывались основатели, все больше распространяются для всеобщего использования. Некоторые из этих функций становятся общепринятыми в языке, тогда как другие отодвигаются в самые темные уголки языкового сообщества. В этой статье мы рассмотрим пять секретов, которые часто упускаются из виду многими разработчиками Java (справедливости ради, некоторые из них имеют веские на это причины). Мы рассмотрим как варианты их использования, так и причины, которые привели к появлению каждой функции, а также некоторые примеры, демонстрирующие, когда целесообразно использовать эти функции.
Читать полностью »

Привет! Предлагаю Вашему вниманию перевод статьи «My solution is the best!» автора John Hotterbeekx.

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

Что произошло?

Больше половины презентации было на высоте, там приводились подходящие примеры, и публика видела, что докладчик точно знает свое дело. Но то, как мужчина говорил о чужих решениях и методах, явно казалось неправильным. Он называл их дрянными платформами, грубил людям, которые до сих пор использовали решения не из доклада, называя способы и методологии, которые используются всем ИТ-сообществом в течение не одного года, «большими ошибками». Наверное, вы уже поняли мое отношение, во время презентации постоянно слышались примеры таких вещей. Поэтому, хоть содержание и было на пять, его отношение к другим методам вынуждало проявлять к нему неуважение. Этот пример, конечно, слишком кристаллизированный, даже экстремальный, и он заставил задуматься над ним, почему иногда люди ставят своё решение выше чужих, хотя они не всегда таковые?

image
Читать полностью »

Как я на спор развернул двусвязный список за O(1) - 1
Как-то раз я случайно увидел, как мой коллега решает джуниорскую задачку разворачивания двусвязного списка на C++. И в тот момент странным мне показалось не то, что он лид и давно перерос подобное, а само решение.

Вернее, не так.

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

  • Почему по умолчанию все решают задачу именно так?
  • Можно ли сделать лучше?

Читать полностью »

Допустим, у вас есть класс Foo :

class Foo(object):
    def __init__(self, x, y=0):
        self.x = x
        self.y = y

Что происходит, когда вы создаёте его объект?

f = Foo(1, y=2)

Какой метод вызывается первым при этом вызове Foo? Большинство новичков, да и, возможно, немало опытных питонистов тут же ответят: «метод __init__». Но если внимательно приглядеться к сниппетам выше, вскоре станет понятно, что такой ответ неверен.

__init__  не возвращает никакого результата, а Foo(1, y=2), напротив, возвращает экземпляр класса. К тому же __init__ принимает self в качестве первого параметра, чего не происходит при вызове Foo(1, y=2). Создание экземпляра происходит немного сложнее, о чём мы и поговорим в этой статье.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js