Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
 Что обсуждали люди в 2024 году? Самое время вспомнить — через виммельбух Пикабу «Спрятано в 2024»! Печенька облегчит поиск предметов.

Спрятано в 2024

Поиск предметов, Казуальные

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Programming + Программирование

С этим тегом используют

IT Программист IT юмор Разработка Python Картинка с текстом Юмор Все
964 поста сначала свежее
8
ardublock
ardublock
2 месяца назад
ArduBlock

Первый старт в Arduino с кодом!⁠⁠

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

[моё] Arduino Инженер YouTube Программа Тестирование Гайд Программирование Разработка Видео Видео ВК
0
anetto1502
anetto1502
2 месяца назад
Лига программистов

Нельзя использовать goto⁠⁠

Часто говорят, что goto плох. А собственно, почему?

В ассемблерном коде на машинном уровне все управляющие конструкции (if, while, for и другие) преобразуются в набор команд с безусловным переходом jmp (UPD: как правильно заметили, с безусловным или условным переходом, но по указанному адресу, то есть куда угодно). А такой переход — самый настоящий goto. То есть ты весь такой изящный во фраке пишешь циклы, а наглый компилятор/интерпретатор выкидывает всю красоту и делает goto.

Так почему же сам goto является признаком плохого кода, если он на самом деле везде?

Ответ кроется в умении сохранять контекст. Человек может в голове держать 5-9 сущностей, больше не получается. Поэтому придумали функции, и придумали держать их небольшими — для снижения когнитивной сложности. Конструкция if переведёт тебя в одну из веток ниже, циклы for и while выполнят тело цикла или выбросят за его пределы. Команда goto сложность привносит — прыжок может быть куда угодно. А повышение сложности всегда приводит к росту числа ошибок.

Нельзя использовать goto Программирование, IT, Goto, Хороший код

Ну а ещё из-за goto может напасть велоцираптор

[моё] Программирование IT Goto Хороший код
26
13
zserhio
zserhio
2 месяца назад
Программирование на python

Простая пинговалка с графиком на Python⁠⁠

Простая пинговалка с графиком на Python Программирование, Python, Длиннопост

https://www.online-python.com/HRuJIQPs3E

import tkinter as tk

from icmplib import ping

from datetime import datetime

from collections import deque

import matplotlib.pyplot as plt

from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

import configparser

import matplotlib.dates as mdates

import threading


UPDATETIME = 20

INI_FILE = 'hosts.ini'

COLUMN = 2

GRAHP_WIDTH = 600

GRAHP_HEIGHT = 300

GUI_GEOMETRY = "1220x650"

PING_COUNT = 2

PING_INTERVAL = 2

DATA_LIMIT = 3000

class Host:

def __init__(self, ip, name, width_pixels, height_pixels, log_callback):

self.ip = ip

self.name = name

self.ping_data = deque(maxlen=DATA_LIMIT)

self.time = deque(maxlen=DATA_LIMIT)

self.log_callback = log_callback


dpi = 100

width_inches = width_pixels / dpi

height_inches = height_pixels / dpi


self.fig, self.ax = plt.subplots(figsize=(width_inches, height_inches), dpi=dpi)

self.line, = self.ax.plot([], [], label=f'{ip} {name} ms', color='darkgreen', linestyle='-', linewidth=2)

self.ax.legend()


self.ax.xaxis.set_major_formatter(mdates.DateFormatter('%H:%M'))

self.ax.xaxis.set_major_locator(mdates.MinuteLocator(interval=30))


self.fig.autofmt_xdate()


def ping_host(self, ip, count=PING_COUNT, interval=PING_INTERVAL):

return ping(ip, count=count, interval=interval)


def update_ping(self):

try:

response = self.ping_host(self.ip)

current_time = datetime.now()

self.time.append(current_time)


if response.is_alive:

self.ping_data.append(response.avg_rtt)

else:

self.ping_data.append(0)

self.log_callback(f"{current_time.year}.{current_time.month}.{current_time.day} {current_time.hour}:{current_time.minute} : {self.name} ({self.ip}) недоступен\n")


self.line.set_data(self.time, self.ping_data)


self.ax.relim()

self.ax.autoscale_view()

self.fig.tight_layout()

self.canvas.draw()

except Exception as e:

print(f"Error pinging {self.ip}: {e}")


class App:

def __init__(self, GUI, ini_file):

self.gui = GUI

self.gui.title("Монитор Доступности оборудования")

self.gui.geometry(GUI_GEOMETRY)


self.hosts = self.load_hosts_from_ini(ini_file)


self.log_text = tk.Text(self.gui, height=10, width=80, wrap='none', state='disabled')

self.log_text.grid(row=0, column=0, padx=10, pady=10, sticky="nsew")


self.log_scrollbar = tk.Scrollbar(self.gui, orient="vertical", command=self.log_text.yview)

self.log_scrollbar.grid(row=0, column=1, sticky="ns")

self.log_text['yscrollcommand'] = self.log_scrollbar.set


self.canvas = tk.Canvas(self.gui)

self.scrollbar = tk.Scrollbar(self.gui, orient="vertical", command=self.canvas.yview)

self.scrollable_frame = tk.Frame(self.canvas)


self.scrollable_frame.bind(

"<Configure>",

lambda e: self.canvas.configure(scrollregion=self.canvas.bbox("all"))

)


self.canvas.create_window((0, 0), window=self.scrollable_frame, anchor="nw")

self.canvas.configure(yscrollcommand=self.scrollbar.set)


for i, host in enumerate(self.hosts):

canvas = FigureCanvasTkAgg(host.fig, master=self.scrollable_frame)

canvas.get_tk_widget().grid(row=i//COLUMN, column=i%COLUMN, padx=5, pady=5)

host.canvas = canvas


self.canvas.grid(row=1, column=0, sticky="nsew")

self.scrollbar.grid(row=1, column=1, sticky="ns")


self.gui.grid_rowconfigure(1, weight=1)

self.gui.grid_columnconfigure(0, weight=1)


self.start_ping()


def load_hosts_from_ini(self, ini_file):

config = configparser.ConfigParser()

config.read(ini_file)

return [Host(ip, hostname, width_pixels=GRAHP_WIDTH, height_pixels=GRAHP_HEIGHT, log_callback=self.log_message) for section in config.sections() for hostname, ip in config.items(section)]


def log_message(self, message):

self.log_text.config(state='normal')

self.log_text.insert("1.0", message)

self.log_text.config(state='disabled')


def start_ping(self):

for host in self.hosts:

thread = threading.Thread(target=host.update_ping)

thread.start()

self.gui.after(UPDATETIME * 1000, self.start_ping)


GUI = tk.Tk()

app = App(GUI, INI_FILE)

GUI.mainloop()

https://www.online-python.com/HRuJIQPs3E

формат ини-файла

[DNS]

google1 = 8.8.8.8

google2 = 8.8.4.4

cloudflare1 = 1.1.1.1

Quad9 = 9.9.9.9

Показать полностью
[моё] Программирование Python Длиннопост
10
185
Mixerrr3
2 месяца назад
Android

Ответ на пост «RuStore - 2»⁠⁠2

Автор все смешал в одном посте: майнер, прослушка, вирусное ПО, разделение программы на две части. Я немного знаю о программировании, писал ПО для Windows, пользуюсь андроидом давно и есть, что ответить. Давайте по порядку.

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

После ресета (еле нашёл это сочетание клавиш) всё поднялось и тут же вывалилась куча уведомлений от рустора - доступно 16 обновлений.

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

Стоит разнести данные, которые могут вообще ежесекундно обновляться (СУБД например) и сама программная часть, которая должна обновляться как можно реже

С разделением ПО на СУБД и локальную часть звучит очень странно. Появление новых функции в серверной части, потребует так же изменений в локальной версии. Да и трафик приложение будут потреблять еще больше, а время запуска увеличится. Автор явно не знает основ объектно-ориентрованного программирования. То, что работает, как правило, стараются не трогать, а вот новые баги появляются при внесении новых функций и попытке прикрутить их к старому.

Весь современный говнософт пишется по принципу "хуяк-хуяк и в продакшен!"

Проблемы с софтом, это результат маркетинга (да, автор прав насчет быстрее разработка, меньше тестов), но не только в этом.

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

Вторая проблема - это эффект "Nero Burning Rom", кто работает с компами давно, помнит программу для записи на диски. Сначала это была легкая программа, с удачным интерфейсом и возможностями. Но со временем туда воткнули кучу "плюшек", сделали свой плеер, редактор всего подряд и в результате программа стала тяжелая и никому не нужная. Подобное встречается в приложениях интернет-магазинов, клиентов банков, клиентов мобильных операторов (привет Мегафон с приложением более 200 Мб с рекламой и играми) и т.д.

Мобильные приложения - это какой то особый филиал ада. Неспроста новые версии андроида не ставятся на уже старые телефоны (чего блять? ему всего год!) Поэтому нехрен там обновлять и сам софт.

Взаимодействие программы и ОС телефона происходит через прослойку библиотек. Программа обращается к определенным возможностям системы, та дает доступ, жонглирует памятью и ресурсами. С каждой версией ОС системы, разработчики стараются внести новый функционал, сделать всё безопаснее. Старые функции переписывают ради эффективности и безопасности (разрабы Андроида не дурки, сравните возможность настроить уведомления в андроиде 13 и андроиде 6, например). Разработчики ПО, в свою очередь, не могут и не хотят поддерживать старые и новые версии, многие функции не будут работать на старых телефонах (те же уведомления и виджеты).

Итого у нас есть:

  1. Разработчики операционной системы (Адроид в данном случае) с своими требованиям безопасности и новыми функциями.

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

  3. Разработчики оптимизированной ОС именно на телефон (тот же MIUI по сути надстройка над андроидом от Сяоми), которые хотят сделать ОС под себя, что бы было красиво, функционально, добавить своё ПО и часто рекламу.

  4. Разработчики ПО, работающие по тех. заданию, пытающиеся сделать ПО для разного зоопарка телефонов и оболочек.

  5. Маркетинг отделы, в каждом из 4-х пунктах выше, цель которых максимизация прибыли.

  6. Законодательство РФ - теперь в телефонах необходимо предустановленное российское ПО.

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

По моему опыту рустор работает неплохо, явных проблем с ним не замечено. Посмотрите какое приложение потребляет постоянно батарею, обновите приложения, бывает, все же глюки пропадают. И да, телефоны на адроиде за 5 тыс. рублей действительно тормозят (смотрите пункт 2 из итогов).

Показать полностью
[моё] Личный опыт Android IT Мысли Программирование Мат Текст Ответ на пост
14
87
moose.kazan
moose.kazan
2 месяца назад

Ответ на пост «RuStore - 2»⁠⁠2

Кидать говном в разработчиков мобильных приложений вообще последнее дело. У разработчиков самих яйки в тисках. Тот же Google регулярно предлагает выбор: либо разработчик публикует обновление с поддержкой нового SDK или гугл удаляет приложение. И в итоге разработчик даже если ничего не планировал обновлять раз в год вынужден тупо пересобирать приложение под новый SDK и публиковать его.

Причём публиковать обновления к существующим приложениям это ещё ладно. Тут требования мягче. А вот чтобы опубликовать новое приложение надо соответствовать ещё более жёстким требованиям. Желающие могут почитать хотя бы тут.

По поводу использования фреймворков: при переходе на новые версии SDK часто недостаточно просто пересобрать приложение поправив циферки. Приходится переписывать отдельные куски кода с учётом изменений в API. Иногда достаточно радикально. И тут велик соблазн перейти на использование фреймворков, которые этот головняк с тебя снимут. Т.е. ты продолжишь дёргать методы фреймворка, а чего там под капотом тебя уже не так сильно волнует.

Хотя если смотреть глубже то КМК самая идея мобильных приложений порочна. Многие приложения появились как результат неумения сверстать сайт так, чтобы он нормально отображался на смартфонах. Всякие интернет-магазины, пиццерии и проч. Вполне достаточно PWA. Но это уже совсем другая боль.

Личный опыт Android IT Мысли Программирование Мат Текст Ответ на пост
18
79
tproger.official
tproger.official
2 месяца назад
Типичный программист

Берегите детей от айтишки⁠⁠

Берегите детей от айтишки
IT IT юмор Программирование Программист Дети Скриншот
16
1
YellowClub
YellowClub
2 месяца назад

На прошлой неделе Николай Оберемко провел второй митап в Краснодаре⁠⁠

1/3

Несмотря на то, что из-за дождя город встал в одной большой пробке, участники прошли этот челлендж и добрались до места назначения ✔️

Спикеры показали отличные доклады, которые расширили кругозор и смотивировали на освоение новых направлений.

✔️ Доклад Романа Чумадина про мобильные приложения напомнил Николаю его опыт работы с мобильными технологиями 1С. Это, действительно, удобно и полезно.

✔️ Доклад Владимира Пилипенко показал, как можно в 1С выстраивать невероятные интеграции на примере решения CAD задач в 1С в рамках отраслевого решения.

Презентации спикеров и фото уже в чате Желтого клуба Краснодара. Вступайте, чтобы посмотреть материалы и не пропустить следующие митапы: https://t.me/+11qT3JDBcKFhMzgy

Показать полностью 3
1С Программирование 1с:предприятие 8 Telegram (ссылка)
8
Партнёрский материал Реклама
specials
specials

Сколько нужно времени, чтобы уложить теплый пол?⁠⁠

Точно не скажем, но в нашем проекте с этим можно справиться буквально за минуту одной левой!

Попробовать

Ремонт Теплый пол Текст
732
Dimonbee
2 месяца назад

RuStore - 2⁠⁠2

Аналогично завис напрочь телефон у жены (вообще другой модели). После ресета (еле нашёл это сочетание клавиш) всё поднялось и тут же вывалилась куча уведомлений от рустора - доступно 16 обновлений. Вынес эту хрень начисто. Смарт сразу ожил и начал работать в разы быстрее, как сновья.

РУСТОР - ВРЕДОНОСНОЕ ПО!!!

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

Ну и пояснительная бригада к предыдущему моему посту, почему частое обновление программ - вообще не ок! Стоит разнести данные, которые могут вообще ежесекундно обновляться (СУБД например) и сама программная часть, которая должна обновляться как можно реже - не чаще, чем раз в полгода. Потому что не трожь то, что работает!

Весь современный говнософт пишется по принципу "хуяк-хуяк и в продакшен!", чтобы опередить конкурентов и захавать кусок рынка побольше. Отладка, бета-тестирование будем делать на котиках (клиентах), и пох что они будут при этом вопить и плеваться, деваться то им некуда. И что самое грустное, уже мало кто понимает, что так быть вообще то не должно, это НЕ норма!

Я давно живу на этом свете, компы появились при мне. Но не настолько давно, чтобы меня начала подводить моя память :) Типовой жизненный цикл программного продукта:

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

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

Мобильные приложения - это какой то особый филиал ада. Неспроста новые версии андроида не ставятся на уже старые телефоны (чего блять? ему всего год!) Поэтому нехрен там обновлять и сам софт. Работает - не трожь!!! Ничего нового в твоей приложке не появится, оно только тормозить начнёт. Ну или рекламу чёрной пятницы тебе навтыкают везде где только можно. Потом опять обновят, чтобы её убрать, попутно ещё затормозив приложку. И так до тех пор, пока ты не психанёшь, и не пойдёшь за "новым" смартом, который также через год станет неактуален.

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

Показать полностью
[моё] Личный опыт Android IT Мысли Программирование Мат Текст
371
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии