LINUX.ORG.RU

Сообщения MetalBeaver

 

Обновить видеокарту

Ребят, у меня с финансами сейчас очень туго, но есть одна проблемка в плане железа, которая требует решения. Я пользуюсь старым компом, я уже даже не помню комплектацию, и когда-то давно в нём сдохла видюха... Видюху я ту заменил на GeForce 210. Но сейчас мне её стало нехватать. Она не держит походу вообще никакие современные технологии ни на свободных дровах ни на проприетарных. Я пытался поиграть в простенькие старенькие игры, но она их не потащила. То падала, то говорила, что не держит OpenGL 4.0, то ещё что-то - на разных по-разному. Кроме того, даже видео в высоком качестве у меня работает в режиме слайд-шоу. Потому прошу комьюнити подсказать мне (ибо я вообще уже ничерта не понимаю в современном железе) подобрать мне простенькую видюху, которая будет стоить дёшево, но хоть как-то адекватно работать.

Если уж совсем не лень, тыкнете, пожалуйста, на конкретную модель вот в этом магазине, чтобы мне далеко не ходить: https://komtek.net.ru/

Заранее спасибо.

 , ,

MetalBeaver ()

Как сделать иконку PhpStorm в трее Cinnamon?

Есть скрипт ~/PhpStorm/bin/phpstorm.sh который запускает IDE.

Также, есть ~/PhpStorm/bin/phpstorm.png размером 128x128px.

Как сделать из этого иконку в трей корицы?

 , ,

MetalBeaver ()

Any reason why you are defining your return type? Is this for readability?

Я создал на этом форуме тему о том, что написал на питоне скрипт для загрузки файлов через ssh. Далее стал понемногу развивать его. Меня конечно заклевали... но так же один человек предложил опубликовать свою разработку (если её можно так назвать) на редите, что я и сделал. И там мне задали вопрос, который я написал в заголовке этой темы. И вот что, знаете, я не могу определиться с тем, что мне на него ответить. Может вы мне поможете? Мне вообще не очень близка динамическая типизация и я очень непонимаю, почему я должен обладать навыками телепатии и догадываться, какие типы данных могут попасть, например, в переменную, или лезть в документацию (если таковая к превеликому счастью имеется), чтобы узнать, что возвращает та или иная функция... ну а в противном случае - лезть в кишки функции и копаться-копаться или смотреть на примеры её использования и надеяться на то, что выуженная мною информация окажется полной и приложение не рухнет в произвольный момент в рантайме. Я, чёрт возьми, определяю возвращаемый тип для того, чтобы, ВНЕЗАПНО, знать возвращаемый тип. И я очень рад, что такую штуку, как тайпхинтинг, завезли в питон, она хоть как-то позволяет убрать часть граблей. Но на форуме по питону говорить, что динамическая типизация - говно, как-то не очень дружелюбно, мне кажется.

 , ,

MetalBeaver ()

Написал статейку на Хабру про настройку HTTP/2 на убунте с похапэ простыми словами

Сабж. Написал статейку на Хабру про настройку HTTP/2 на убунте с похапэ простыми словами. Покритикуйте, что ли.

https://habr.com/post/430188/

 , ,

MetalBeaver ()

PHP7, Python3 и SQL-инъекции

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

 , ,

MetalBeaver ()

Колонки 5.1

Прошу прощения, если буду слишком дилетантскими словами говорить. Есть колонки системы 5.1, втыкаются в источник звука оголёнными проводами, раньше они втыкались в DVD плеер, в котором было нужное количество дырок, но он накрылся. Сейчас DVD плееров с такими дырками не продают. Есть ещё телевизор, но аудио у него - тупо стерео. Можно ли дёшево что-то купить, чтобы заюзать 5.1 и телевизор?

 , ,

MetalBeaver ()

Как отучить телефон присасываться к чужим wifi

Телефон Meizu с их модифицированным седьмым андроидом постоянно присасывается к незапароленным wifi. Как отучить его этим заниматься?

 , ,

MetalBeaver ()

Где научиться уму-разуму?

Наверное, это стоило разместить в толксах, но у меня шкворца не хватает. Потому, заранее прошу прощения, если что не так.

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

Меня интересует веб. Администрирование линукса, программирование бэк/фронт, дизайн/вёрстка, весь этот фуллстэк. С одной стороны, я без проблем и заглядывания в гугль, могу поднять сервер, поставить апач, настроить https и прочие шняги, написать свой mvc на php, поднять ноду, сделать вёрстку на чистом html5 или взять бутстрап, прикрутить к нему какой-нибудь js-фреймворк. Так в начале этого года я за пару недель набросал форум russiancoders, который начал тонуть в срачах и я его грохнул... но чёрт с ним, дело в другом...

Дело в том, что меня не покидает ощущение, что я тупой и занимаюсь технологиями десятилетней давности, на которых, пусть и смогу что-то сварганить, но всё равно не знаю их на должном уровне. Вроде бы с одной стороны, мне доводилось с нуля подымать самому проекты и я бы мог себя позиционировать, как сеньёра, но с другой, читаю вакансии джуниоров и понимаю, что я, как уже писал, серьёзно отстал от мейнстрима и имею значительные пробелы в базисе... как на днях мне тут подробно объяснили, что я недалёкий, потому что вместо rsync написал свой велосипед на питоне, а я до этого момента и не знал, что такая шняга, как rsync существует.

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

 , ,

MetalBeaver ()

Скрипт для загрузки файлов через scp

Я вообще не очень в теме, как стоило решить подобную задачу, но ко мне пришло такое решение и я хочу поделиться им с комьюнити, и, надеюсь, на адекватную критику и всё такое. Суть задачи - нужно загружать из определённой директории (директорий) файлы через scp, если директории нет - создать её. По мере развития проекта файлов и директорий становится много, потому нужно проверять, во-первых, не создана ли ещё директория (чтобы лишний раз не дёргать сервер), во-вторых, был ли изменён файл (чтобы лишний раз не гонять его по сети). Для хранения данных используются два файла: для информации о загруженных файлах и о созданных директориях. Собственно, вот код на третьем питоне. Язык я знаю крайне паршиво, так что, вероятно, можно было написать всё покороче... но зато вроде всё работает.

# -*- coding: utf-8 -*-
import os
from pathlib import Path
import paramiko
from paramiko import SSHClient
from scp import SCPClient

SERVER_IP = "192.168.0.1"
SERVER_USERNAME = "root"
SERVER_PASSWORD = "toor"
SERVER_DIRECTORY = '/var/www/html'
CACHE_FILES = "uploader-cache-files.txt"
CACHE_DIRS = "uploader-cache-dirs.txt"

def check_file_changes(name: str) -> bool:
	my_file = Path(CACHE_FILES)

	if not my_file.is_file():
		f = open(CACHE_FILES, "w+")
		f.close()

	f = open(CACHE_FILES, "r")
	lines = []

	while True:
		line = f.readline()

		if not line:
			f.close()
			break

		lines.append(line)

	need_load = False
	found = False

	f = open(CACHE_FILES, "w")
	for line in lines:
		pair = line.split('|')
		file_name = pair[0]
		file_size = int(pair[1])
		statinfo = os.stat(file_name)

		if file_name == name:
			found = True

			if statinfo.st_size != file_size:
				line = file_name + '|' + str(statinfo.st_size) + '\r\n'
				need_load = True

		f.write(line)

	if not found:
		need_load = True
		statinfo = os.stat(name)
		line = name + '|' + str(statinfo.st_size) + '\r\n'
		f.write(line)

	f.close()

	return need_load

def need_create_dir(name: str) -> bool:
	my_file = Path(CACHE_DIRS)

	if not my_file.is_file():
		f = open(CACHE_DIRS, "w+")
		f.close()

	f = open(CACHE_DIRS, "r")
	lines = []

	while True:
		line = f.readline()

		if not line:
			f.close()
			break

		lines.append(line)

	found = False
	f = open(CACHE_DIRS, "w")
	for line in lines:
		if line.strip() == name:
			found = True

		f.write(line.strip() + '\r\n')

	if not found:
		f.write(name + '\r\n')

	return not found

def need_upload_file(name: str) -> bool:
	if name == '.htaccess':
		return True

	ext = name.split('.')
	ext = ext[len(ext) - 1]

	if ext in ['php', 'css', 'js', 'png', 'jpg', 'gif', 'sql']:
		return True

	return False

def upload_file(name: str, path: str, scp: SCPClient):
	if check_file_changes(name):
		print("File '" + name + "' uploading...")
		scp.put(name, path)
	else:
		print("File '" + name + "' skip")

def upload_directory(name: str, ssh: SSHClient, scp: SCPClient):
	print("Observe '" + name + "' directory...")

	if name != '.' and need_create_dir(name):
		ssh.exec_command('mkdir -p ' + SERVER_DIRECTORY + '/' + name)

	files = [f for f in os.listdir(name) if os.path.isfile(name + '/' + f)]
	for f in files:
		if need_upload_file(f):
			upload_file(name + '/' + f, SERVER_DIRECTORY + '/' + name, scp)

	dirs = [d for d in os.listdir(name) if os.path.isdir(name + '/' + d)]
	for d in dirs:
		if d not in ['.', '..', '.git', '__pycache__']:
			upload_directory(name + '/' + d, ssh, scp)

def upload():
	ssh = SSHClient()
	ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
	ssh.connect(SERVER_IP, 22, SERVER_USERNAME, SERVER_PASSWORD)
	scp = SCPClient(ssh.get_transport())
	upload_directory('app', ssh, scp)
	scp.close()
	ssh.close()

if __name__ == "__main__":
	upload()

 , ,

MetalBeaver ()

Хочется странного: типизированный питон

За свои пятнадцать с чем-то лет варения в индустрии, мне доводилось работать на большом количестве языков и диалектов: начиная с бейсика и делфи/паскаля/шарпа, и заканчивая джаваскриптом, пыхом и питоном, ну и касался всякого: от эрланга до хаскеля. И вот сейчас сижу ваяю сайтец под заказ на своём MVC-фреймворке и выпив очередную чашку кофе, понял, что хочу странного. Хочу питон со строгой статической типизацией. Есть ли такое нынче в природе?

 , , ,

MetalBeaver ()

RSS подписка на новые темы