LINUX.ORG.RU
ФорумTalks

Откуда такой поток элементарных вопросов?

 ,


0

1

Весь Development/Desktop забит элементарными вопросами типа «я программист, как учить си» или «я админ, что такой dmesg?». Сессии должны быть уже сданы, у школьников каникулы, так откуда вдруг нахлынувший поток настолько низкоквалифицированных вопросов?

Про админство кто-то предлагал вариант что из-за политики Минцифры по поводу регистрации ПО (то, что оно теперь должно работать на ру-ОСях типа Астры) появились элементарные вопросы по Linux. А программирование тогда откуда?

★★★★★
Ответ на: комментарий от LightDiver

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

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

PPP328 ★★★★★
() автор топика
Ответ на: комментарий от PPP328

Единственный раз, когда после клика все сработало с первого раза и штатно - это у меня в линуксе. Ни на одной винде пока это говно не заработало. Ни павершелл, ни с#. Я в шоке. И у КАЖДОГО разные причины.

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

LightDiver ★★★★★
()
Последнее исправление: LightDiver (всего исправлений: 1)
Ответ на: комментарий от LightDiver

Можно написать статью на 5000 слов, как в винде получить текущую версию винды. Даже на разных версиях 10ки будет разный рецепт, потому что они старое ломали, а новое могли еще не добавить. В итоге нет 100% варианта, который заработает на 7, 10, 11 или каком-то из их апдейтов.

А уж сколько настроек в реестре может быть…

И сколько настроек блокирует антивирь…

PPP328 ★★★★★
() автор топика
Ответ на: комментарий от PPP328

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

А, все, проехали. Почитал инструкцию по работе в винде с линуксовым софтом.

LightDiver ★★★★★
()
Последнее исправление: LightDiver (всего исправлений: 1)
Ответ на: комментарий от LightDiver

Адекватно это будет работать либо в cygwin либо в wsl. Остальные кейсы могут ломаться из-за того, что, например, в PATH пути не прописаны. Или прописаны но не в том порядке.

PPP328 ★★★★★
() автор топика
Ответ на: комментарий от PPP328

А как они этим пользуются? И зачем? Ну это же реально трэш. Мне это напоминает старый полу-развалившийся сарай, к которому раз за разом делают различные подпорки, пристройки, обносят колючей проволокой итд. Вместо того, чтобы просто построить новый и крепкий.

LightDiver ★★★★★
()
Ответ на: комментарий от PPP328

В этом проблемы особо нет.
Перестал использовать WIN API потому что он не кроссплатформенный.
В целом конечно у Microsoft много полезных идей и хорошие разработчики, которым РЕСПЕКТ.

Forum0888
()
Ответ на: комментарий от Forum0888

Оооо.. Ты мне идею подал. А что если Qt попробовать…

И у меня встал вопрос тут. А если скрипт питона скомпилировать, в винде нужно будет для запуска такого устанавливать питон?

LightDiver ★★★★★
()
Последнее исправление: LightDiver (всего исправлений: 1)
Ответ на: комментарий от LightDiver

А как они этим пользуются?

Не используют кроссплатформенное программирование. Никогда не задумывались, почему так мало полезного софта портировано на Linux?

И зачем?

Потому что когда-то смогли хорошо коммециализировать. Ни один менеджер вам не скажет «а давайте что-то перепишем потому что это писалось пьяными колхозниками в вальпургиеву ночь и работает только потому что мы туда ничего не добавляем».

А потом «ой, а какой-то апдейт сломал принтеры в локалке», «ой, а это в том блобе который мы хз как чинить». И лезут туда что-то патчить, но не переписать.

Бо’льшую часть настроек винды до сих пор не переписали на модных фреймворках и она выглядит как привет из 95го тупо потому что 99% разрабов этой части не знают как оно работает а доков нет, потому что в коммерции доки не пишут.

PPP328 ★★★★★
() автор топика
Ответ на: комментарий от Forum0888

Перестал использовать WIN API потому что он не кроссплатформенный.

Ну это вы так считаете, что перестали. Потому что под капотом вы всё равно его вызываете, хотите вы этого или нет. А поведение под разными версиями разное. Та же разница в поведении A и W функций. Под 7 A однобайтная, W двубайтная, под 10 ранней A1, W2, под 10 поздней A1 или UTF-8 в зависимости от настроек, W2, под 11 AUTF-8, W2, при этом узнать включена ли настройка вы не можете.

PPP328 ★★★★★
() автор топика
Ответ на: комментарий от PPP328

Потому что под капотом вы всё равно его вызываете,

Конечно, но кроссплатформенное API уже не «прибито гвоздями» к WIN API.

Forum0888
()
Ответ на: комментарий от PPP328

Та же разница в поведении A и W функций. Под 7 A однобайтная, W двубайтная, под 10 ранней A1, W2, под 10 поздней A1 или UTF-8 в зависимости от настроек, W2, под 11 AUTF-8, W2, при этом узнать включена ли настройка вы не можете.

Да, «заморочки» есть и их нужно учитывать в разрабатываемом API.

Но поведение отличается и вы этого со своего уровня абстракции не увидите.

Так «велосипедостроение» не всегда полезно.
В том же SDL многое можно «подсмотреть» и перенять.

Forum0888
()
Ответ на: комментарий от Forum0888

Так «велосипедостроение» не всегда полезно.

В 90% случаев без велосипеда нельзя сделать функционал.

Вот вам живой пример. По работе мы работаем с сетью. Окей, нам доступен стандартный select, read, write.

Произошла ошибка. Как нам узнать какая? Под linux мы делаем

printf("%d %s\n", errno, strerr(errno));

Можете сказать, что нужно сделать по Windows?

PPP328 ★★★★★
() автор топика
Ответ на: комментарий от PPP328

Граждане программисты, а как в линуксе собрать питон скрипт в бинарниквинды? Я тут ковыряю pyinstaller, но не вижу пока параметров сборки именно под винду.. Хмм..

LightDiver ★★★★★
()
Ответ на: комментарий от PPP328

В 90% случаев без велосипеда нельзя сделать функционал

Ранее уже сказал о том, что можно и полезно использовать API иных разработчиков (именно это вкладывалось в термин «велосипед»).
Но, безусловно бывает (и частенько) необходимость в разработке своего API.

Forum0888
()
Последнее исправление: Forum0888 (всего исправлений: 1)
Ответ на: комментарий от Forum0888

API иных разработчиков (именно это вкладывалось в термин «велосипед»).

Нене, погодите, аналог errno мне никакая внешняя АПИшка не даст. Тут вы либо целиком пользуетесь чужим продуктом типа GTK/Qt/[.NET|Mono] со всеми косяками типа тех что для GUI вам придется подключать еще что-то, либо страдаете и пишете свой костыль

P.S. Про errno так и не ответили :D

PPP328 ★★★★★
() автор топика
Ответ на: комментарий от PPP328
wine: failed to open "/home/diver/WP7/PF/drive_c/Program Files (x86)/Python38-32/python.exe -m pip install --upgrade pip": c0000135

Какая интерсная задача однако, оказалась.. Я так не сношался лет 10 уже.

LightDiver ★★★★★
()
Ответ на: комментарий от PPP328

P.S. Про errno так и не ответили :D

Да и не буду отвечать.
Это частный вопрос и у меня никогда не бывает желания с кем-то спорить.

Forum0888
()
Ответ на: комментарий от Forum0888

Ответ простой - в частном случае - никак. Можно вызвать errno, но большинство функций стандартной библиотеки в винде его не устанавливает, а те кто устанавливает но под капотом используют winapi не пробрасывают в него код ошибки. Есть отдельные функции, что позволяют узнать код ошибки (GetLastError), если она касается не стандартной бибилиотеки. Таких кодов около 5000

Кроме того весь сетевой стек в винде из OS/2, поэтому он никак не связан с ядром и winapi, из-за чего код ошибки сети можно получить только через WSAGetLastError. (еще около 5000 кодов)

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

А вы-то всего-лишь хотели использовать сеть в винде.

PPP328 ★★★★★
() автор топика
Ответ на: комментарий от PPP328

Слушай.. Вот в вайне питон открывается, а ни одну команду не принимает. У тебя нет идей?

wine: failed to open "/home/diver/WP7python/PF/drive_c/Python311/python.exe --version": c0000135

Зато если открыть без параметров - всеработает, код выполняется.

Нельзя как то там внутри уже установить нужное?

LightDiver ★★★★★
()
Ответ на: комментарий от PPP328

Таких кодов около 5000

Ладно, кратко расскажу как у меня.
Любое WIN API (какой-либо подсистемы) напрямую не используется.
При использовании стороннего API разрабатывается binding, который учитывает все заморочки 5000 случаев и сводит всё к унифицированной работе с любым сторонним API.
У меня такого рода проблем нет.

Forum0888
()
Ответ на: комментарий от LightDiver

Единственный раз, когда после клика все сработало с первого раза и штатно - это у меня в линуксе. Ни на одной винде пока это говно не заработало. Ни павершелл, ни с#. Я в шоке. И у КАЖДОГО разные причины.

Не используй последние версии .NET, если я ничего не перепутал ты .NET 7.0 использовал. Он вообще осенью прошлого года появился и работать будет только в 10-й и 11-й винде со свежими обновлениями. Я не разбирался с .net core, но по идее там при компилировании есть опции настройки совместимости.

В принципе я предпочитаю Mono использовать - это уже устарело и полно современных пакетов, не поддерживающих его и требующих .Net 5.0 и выше, но если можно обойтись без них, то совместимо вообще практически со всем зоопарком хоть линуксовым, хоть виндовым. Там версия зафиксирована 10-летней давности.

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

praseodim ★★★★★
()
Последнее исправление: praseodim (всего исправлений: 1)
Ответ на: комментарий от LightDiver

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

mydibyje ★★★★
()
Ответ на: комментарий от LightDiver

Вы пытаетесь запустить бинарь «python.exe –version» а не бинарь python.exe с аргументом –version. В винде разделение идет по пробелам, в линуксе в массиве argv.

PPP328 ★★★★★
() автор топика
Ответ на: комментарий от PPP328

Под 7 A однобайтная, W двубайтная, под 10 ранней A1, W2, под 10 поздней A1 или UTF-8 в зависимости от настроек, W2, под 11 AUTF-8, W2, при этом узнать включена ли настройка вы не можете.

Э, A1 или UTF-8 зависит от установленных настроек кодовой страницы. Это вполне узнаваемо. Если ограничиться только английским языком в сообщениях, то A1 и W2 достаточно универсально.

praseodim ★★★★★
()
Ответ на: комментарий от praseodim

Если ограничиться только английским языком в сообщениях, то A1 и W2 достаточно универсально.

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

Это вполне узнаваемо.

Да, поэтому на странице справки GetACP() МС прямо написало, что работает она не всегда, и вообще не используйте её.

For the Multilingual User Interface (MUI) edition of Windows, the system ACP might not cover all code points in the user’s selected logon language identifier. For compatibility with this edition, your application should avoid calls that depend on GetACP either implicitly or explicitly, as this function can cause some locales to display text as question marks. Instead, the application should use the Unicode API functions directly, for example, the Unicode version of TextOut.

PPP328 ★★★★★
() автор топика
Ответ на: комментарий от LightDiver

Это вы, батенька, Qt не трогали. Там бывает и по 400 метров + 300 все файлы, которые требуются для запуска включая внутренние штуки Qt, которые вам не нужны.

PPP328 ★★★★★
() автор топика
Ответ на: комментарий от PPP328

В пень. Сделаю апдейтер на питоне. Ох хоть выглядит компактно по-человечески, да и удобный. А там пусть хоть вручную обновляются, хоть ищут способ его запустить.

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

Можете инстальник собрать, который анализирует имеется ли у пользователя Python нужной версии и
если его нет, то автоматом его установит (многие инстальники обычно так построены).

Forum0888
()
Последнее исправление: Forum0888 (всего исправлений: 1)
Ответ на: комментарий от PPP328

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

В принципе, если их не пытаться явно передавать в программу, то вроде и ничего, оно под капотом останется. Хотя да, я стараюсь не использовать что-то, кроме ansi.

Да, поэтому на странице справки GetACP() МС прямо написало, что работает она не всегда, и вообще не используйте её.

Я чего-то давно получается не работал с этим. Но должен же быть способ? Сама винда-то как-то для себя знает с чем и как она работает.

praseodim ★★★★★
()
Ответ на: комментарий от praseodim

Сама винда-то как-то для себя знает с чем и как она работает.

Такого рода вопросы обычно «разруливаются» в config проекта (посмотрите например код SDL).

Forum0888
()
Ответ на: комментарий от praseodim

Хотя да, я стараюсь не использовать что-то, кроме ansi.

Добро пожаловать в мир где кириллица в путях может сломать программу.

Но должен же быть способ

Да, требуете чтобы у пользователя стояла конкретная версия винды

PPP328 ★★★★★
() автор топика
Ответ на: комментарий от Forum0888

Я просто скопмилировал в бинарник файл. Должно же работать. Пусть он и очень большой. Пока не на ком протестировать, но в теории должно. И питон охренительно прост даже для конченого нуба:

import urllib.request
urllib.request.urlretrieve("https://github.com/Vladgobelen/klad/archive/refs/heads/main.zip", "main.zip")

import zipfile
archive = 'main.zip'
with zipfile.ZipFile(archive, 'r') as zip_file:
    zip_file.extractall("temp")

import shutil
import os
if os.path.isdir('test'):
    shutil.rmtree('test')

import shutil
import os
os.mkdir("test")
file_source = 'temp/klad-main/'
file_destination = 'temp/../test/'

get_files = os.listdir(file_source)

for g in get_files:
    shutil.move(file_source + g, file_destination)

import shutil
shutil.rmtree('temp')

По крайней мере в вайне работает. Ооооочень медленно, но работает.

LightDiver ★★★★★
()
Последнее исправление: LightDiver (всего исправлений: 1)
Ответ на: комментарий от LightDiver

Скажу вам по секрету, я тоже нуб в многих вопросах.
100% разбираюсь в них сам, чтобы не выработать в себе привычку у кого-то искать помощи (в этом и минусы есть, но и много плюсов).

Не претендую на то, что так поступать полезно всем.

Forum0888
()
Последнее исправление: Forum0888 (всего исправлений: 3)
Ответ на: комментарий от Forum0888

У меня всегда три пути:

  1. Я или нахожу решение сам

  2. Или же захожу в тупик и спрашиваю у того, кто может знать. И двигаюсь дальше.

  3. Если не нахожу решения, постою в тупике и забиваю на решаемое на 20 лет.

Так 20 лет назад я решил заняться программированием. И конечно же выбрал си - ибо круто. Сразу же столкнулся с типами…с блядскими типами, в которых до сих пор разобраться не могу. Решения не нашел и на 20 лет завязал с программированием.

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

И конечно же выбрал си - ибо круто. Сразу же столкнулся с типами…с блядскими типами, в которых до сих пор разобраться не могу. Решения не нашел и на 20 лет завязал с программированием.

Кроме шуток, но может надо было ассемблер и машкоды попробовать. Там нет типов. Все просто числа, записанные разным образом в разные места.

praseodim ★★★★★
()
Ответ на: комментарий от praseodim

Пробовал конечно. Но очень мало понял. Интернета особо еще не было и спросить было не у кого. Книги же продавались очень.. мм.. избирательные чтоли. Что завезут, то можно было купить. И еще надо было знать что покупать. Например тогда я купил здоровенную книгу по winapi. Дорогущую.. Так и не пригодилась.

А в библиотеке единственная книга по теме была по gbasic.

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

Шутка

Как найти производную выражения?
Можно вдаваться в «теорию», а можно просто знать набор готовых типовых результатов взятия и стараться методом подстановки привести выражение к типовому.
Такой метод частенько «упрощает жизнь».

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

Forum0888
()
Последнее исправление: Forum0888 (всего исправлений: 2)
Ответ на: комментарий от Forum0888

Вот ни разу не шутка. Когда нихрена не понимаешь и нет того, кто подсказал бы - ты или найдешь нужное чисто случайно, на что шансы не сильно большие или же забьешь.

Я почему вернулс к программированию в пределах доступного мне сейчас? 3 месяца назад мне тут скинули готовый рабочий скрипт луа. Я в него вчитался и охренел какой он простой и удобный. И пошло поехало. А потом мне скинули готовый шаблон аддона для вов. Пустышку, заготовку под аддон. И все - до сих пор остановиться не могу. А все потому что то что я делаю, работает. Нет затыков. Остановки нет.

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

А потому форумы и мессенджеры - одно из величайших достижений человечества.

LightDiver ★★★★★
()
Последнее исправление: LightDiver (всего исправлений: 1)
Ответ на: комментарий от LightDiver

И все - до сих пор остановиться не могу. А все потому что то что я делаю, работает. Нет затыков. Остановки нет.

Так это же прекрасно!

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

Forum0888
()
Ответ на: комментарий от Forum0888

Это не проблемы.

Я выше писал про косяки обучения школьного именно об этом - там не преподают практическое. У тебя интересные задачи, у тебя практика. Это же классно.

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

Если бы в школе детям позволяли заниматься практическими полезными проектами, обучение было бы гораздо проще и интереснее.

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

Если бы в школе детям позволяли заниматься практическими полезными проектами, обучение было бы гораздо проще и интереснее.

В этих вопросах, я нуб (не берусь их обсуждать).

Forum0888
()
Ответ на: комментарий от Forum0888

Я о том, что нужно видеть результаты своего труда. Иначе это не имеет смысла. Наверное так. Мне самому сложно сформулировать точно идею.

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

А здесь додумывать ничего и не нужно.
У каждого из нас работа не из серии «спасения мира», а самая обычная и кому-то от неё и польза имеется.
Такова наша селяви!

Forum0888
()
Ответ на: комментарий от Forum0888

Так и не надо спасать мир. Лично мне надо просто видеть, что есть результаты моего труда. Иначе это хрень какая то.

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

Лично мне надо просто видеть, что есть результаты моего труда.

У меня бывает, что по нескольку месяцев нет результата.
Например, понадобилось разработать API (С++), для возможности работы с файлами типа mxl фирмы 1С.
А задача трудоёмкая весьма.
Трудишься, трудишься, ..., а результата нет.
Терпение должно быть.
Зато и радость от решения задачи есть!

Forum0888
()
Последнее исправление: Forum0888 (всего исправлений: 2)
Ответ на: комментарий от Forum0888

А как же тестинг? Проверка всех вариантов работоспособности..

А то я то вижу результат сразу, но мне тут же мои пользователи накидывают 100500 багов. Которые я сразу и правлю.

LightDiver ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)