LINUX.ORG.RU

Сообщения tonchikp

 

htaccess

Подскажите пожалуйста, как мне сделать такое?

  1. Есть запрос
/директория/файл?строка

надо превратить в

/директория/файл.php?строка

(то есть добавить к нему .php)

  1. А если файла не существует то превратить его в
/директория/файл.html?строка

(то есть заменить .php на .html)

 , , ,

tonchikp
()

Правильный запрос

Уважаемые форумчане! Требуется ваша помощь!

(SQLite3, PHP7)

Имеем три таблицы:

  • таблица ld - список людей
  • таблица pr - список предметов
  • таблица sv - связи между людьми и предметами.

К примеру взял человек предмет - тогда INSERT id человека и id предмета в таблицу связей.

CREATE TABLE ld (id INTEGER PRIMARY KEY AUTOINCREMENT, ch TEXT NOT NULL UNIQUE);

CREATE TABLE pr (id INTEGER PRIMARY KEY AUTOINCREMENT, pr TEXT NOT NULL UNIQUE);

CREATE TABLE sv (id INTEGER PRIMARY KEY AUTOINCREMENT, id_ch INTEGER NOT NULL, id_pr INTEGER NOT NULL, UNIQUE(ch, pr));

Мне необходимо получить:

  • Сколько человек связано с каждым предметом
  • (также) Сколько предметов связано с каждым человеком
  • Вывести список предметов, которые не связаны с людьми (которых нет в таблице связей)
  • (также) Вывести список людей, которые не связаны с предметами (которых нет в таблице связей)

Подскажите, как правильно сделать запросы?

 ,

tonchikp
()

SQLite3 «двойной» JOIN

Уважаемые форумчане! Требуется ваша помощь!

Подскажите пожалуйста как правильно составить JOIN в SQLite3 в следующей ситуации:

Есть таблица имён:

table "names"

name_id - integer primary key autoincrement
name - text

Есть таблица связей:

table "links"

link_id - integer primary key autoincrement
name_a - integer
name_b - integer

name_a и name_b - содержит «name_id» из таблицы «names»

Нужно получить link_id, name_a (с подменой), name_b (с подменой)

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

 , ,

tonchikp
()

Помогите разобраться с shutil Python3

Уважаемые форумчане! Требуется ваша помощь!

Помогите пожалуйста разобраться с библиотекой Python3 shutil!

  • copyfileobj
  • copyfile
  • copymode
  • copystat
  • copy
  • copy2
  • copytree
  • ignore_patterns
  1. В чём разница между этими методами? Кратко если не трудно объясните в какой ситуации каждый применяется?
  2. Например не очень понятно как копируются метаданные без самого файла, куда именно? И наоборот файлы отдельно от метаданных, откуда тогда метаданные берутся?
  3. Если нужно обычное копирование файла, то что из этого использовать?

 

tonchikp
()

Проблема с сетью в Ubuntu Mini

Уважаемые форумчане! Требуется ваша помощь!

Мне нужен Linux без X (без графической оболочки, только консоль). Поставил Ubuntu Mini, при выборе ПО всё по-умолчанию оставил. Но к сожалению к сети Интернет не подключается. Пробовал настроить через /etc/network/interfaces, как советуется в Интернете, не помогло. Ни проводной, ни Wi-Fi не работает. В Mint, Ubuntu всё нормально работает.

В упомянутом файле указал получать по DHCP адреса у роутера, то есть

auto ...
iface ... inet dhcp

после сделал

sudo service networking restart

Подскажите пожалуйста, как решить проблему? В чём может быть дело? Может дистрибутив другой посоветуете? Или настройки какие ещё нужно сделать?

 , , , ,

tonchikp
()

SSH, его логи и актуальные настройки 2017

Уважаемые форумчане! Требуется ваша помощь!

Разбираюсь с технологией SSH(2), есть несколько вопросов:

  • Какие актуальные поправки в настройках клиента и сервера на 2017 год? (Например слышал что уже md5 не безопасно, может ещё что-то есть и я не знаю)
  • Чем смотреть и изучать логи? (Хотелось бы конечно с подсветкой и в реальном времени, ну и с GUI, хотя и без него тоже пойдёт. Что-нибудь с минимумом зависимостей)
  • Как заставить логи писать в отдельный журнал, а не в системный? (Чтобы все логи связанные с SSH были в другой директории, хотя бы временно, для изучения технологии)
  • На что обратить внимание при анализе лога? (Какие признаки попыток вторжения, кроме многих попыток ввода пароля)
  • Как пробиться по такой схеме: Хост1 == Роутер (NAT0) == Провайдер-NAT1 == Интернет == Провайдер-NAT2 == Хост2 Что посоветуете в этой ситуации?
  • Какой сервер и клиент посоветуете? (Выбор я уже сделал, но вдруг удивите :))

Мне по сути от SSH нужны прежде всего операции с файлами (подмонтировал и в файловом менеджере перемещаешь/копируешь/удаляешь файлы и директории)

 , , , ,

tonchikp
()

Борьба с нехорошими символами в именах файлов

Уважаемые форумчане! Требуется ваша помощь!

Хочу разобраться с файловым хранилищем, удалить дубликаты файлов. Написал программу обходящую дерево директорий. Застрял на этапе вычисления хэшей, дело в том, что имена файлов содержат не только алфавитные символы и цифры, а также пробелы и спецсимволы. Сначала Python останавливался на первом же проблемном файле, позже я дописал try / except, и теперь он доходит до конца, пропуская проблемные файлы, но меня это не устраивает!

Язык: Python 3

#! /usr/bin/env python3

import subprocess

try:
    hash = subprocess.check_output('md5sum -- "{}"'.format(file), universal_newlines=True, shell=True)[:32]

except Exception:
    print('Проблемный файл {}'.format(file))

С hashlib пока не получается, проблем много создаёт, поэтому пока пришлось воспользоваться стандартной утилитой md5sum. Может подскажете заодно как решить проблему с применением hashlib.

 ,

tonchikp
()

PHP - execute

Уважаемые форумчане! Требуется ваша помощь!

Подскажите, как эффективно и просто решить задачу:

Есть массив (кстати, может заменить на объект?) и две таблицы в базе данных:

$massive = [

'animal' => 'cat',
'age' => '1',
'color' => 'gray'

];

$db = new PDO('sqlite:file.sqlite');

$db -> exec("CREATE TABLE IF NOT EXISTS 'table1' (
id INTEGER PRIMARY KEY AUTOINCREMENT,

animal TEXT,
age INTEGER

)");

$db -> exec("CREATE TABLE IF NOT EXISTS 'table2' (
id INTEGER PRIMARY KEY AUTOINCREMENT,

animal TEXT,
color TEXT

)");

$prepare1 = $db -> prepare("INSERT INTO 'table1' (animal, age) VALUES (:animal, :age)");
$prepare2 = $db -> prepare("INSERT INTO 'table2' (animal, color) VALUES (:animal, :color)");

Цель: записать массив в обе таблицы. Вроде просто и не было бы вопроса, если бы можно было этот массив отдать в execute и он сам взял что ему необходимо, но насколько я знаю, больше чем нужно параметров нельзя указывать.

Прошу учесть, что задача упрощена! В таблицах куча колонок, а не по две как здесь, поэтому их перечисление трудоёмко, это и заставляет искать иные способы!

 , ,

tonchikp
()

SQL Update or Insert

Уважаемые форумчане! Требуется ваша помощь!

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

  1. Подключаемся к базе данных.
  2. Обновляем запись о посетителе в таблице.
  3. А вдруг посетитель впервые и его записи нет, значит вставляем запись.
  4. Для развёртывания (для первого запуска): А вдруг таблицы нет, значит создаём таблицу.

Вопрос 1: Беспокоит то, что каждый раз при обновлении (update) куча холостых операций (create, insert), может это как то иначе решается, подскажите.

Вопрос 2: А как вы решаете задачи которые требуются однократно при первом запуске?

Вопрос 3: Подключение к базе данных. Может в другой файл переместить? Но тогда при перемещении файла будут проблемы, а если оставить - то постоянно открывается и закрывается подключение к базе данных в разных файлах.

$db = new PDO('sqlite:file.sqlite');

$db -> exec("CREATE TABLE IF NOT EXISTS 'tableName' (

id PRIMARY KEY AUTOINCREMENT,
user TEXT UNIQUE NOT NULL,
visitCounter INTEGER DEFAULT '0'

)");

$db -> exec("INSERT OR IGNORE INTO 'tableName' (user) VALUES ('user1')");

$db -> exec("UPDATE 'tableName' SET visitCounter = visitCounter + 1 WHERE user = 'user1'");

unset($db);

 , ,

tonchikp
()

Пользователь сайта и запросы в базу данных

Уважаемые форумчане! Требуется ваша помощь!

Подскажите, как правильно?

вариант 1)

  • Пользователь заходит на сайт.
  • Заходит на определённую страницу сайта.
  • Делаем запрос в базу данных, можно ли ему эту страницу видеть.
  • И так про каждую страницу на которую он заходит.

вариант 2)

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

В первом варианте минус - куча запросов в базу данных, во втором - теоретически огромный массив

В принципе я думаю что первый вариант лучше, но есть сомнения, поэтому решил спросить

 ,

tonchikp
()

Необычная таблица

Уважаемые форумчане! Подскажите, как такое сделать

Схема таблицы:

|A1|A2  |
|A3  |A4|
|B1|B2  |
|B3  |B4|
A, B - строки; 1, 2, 3, 4 - колонки

Обратите внимание что строка таблицы разбита на две строки, но ширина колонок сохраняется (зависит от самого длинного содержимого колонки, как в обычной таблице)

Возможно ли такое сделать без использования JavaScript?

 , , , ,

tonchikp
()

Перестал загружаться Linux

Уважаемые форумчане! Требуется ваша помощь!

Linux установлен на USB-флешку, но с некоторого времени перестал загружаться, пишет:

Gave up waiting for root device. Common problems:
- Boot args (cat /proc/cmdline)
- Check rootdelay= (did the system wait long enough?)
- Check root= (did the system wait for the right device?)
- Missing modules (cat /proc/modules; ls /dev)
ALERT! /dev/disk/by-uuid/(цифробуквы) does not exist. Dropping to a shell!

BusyBox v1.22.1 (Ubuntu 1:1.22.0-15ubuntu1) built-in shell (ash)
Enter `help` for a list of built-in commands.

Ранее была такая проблема, но она как-то сама восстановилась и исчезла, но сейчас вернулась. Насколько я понял он не находит раздел диска, отсутствует /boot. Это если смотреть с этой же загрузки, а если через LiveFlash, то всё на своих местах, не понятно почему он не видит.

Материнская плата: MSI K9N4 Ultra A7310NMS v1.4 112906

ОС: Xubuntu

 , ,

tonchikp
()

HTML-форма, вроде просто, а вроде и нет

Уважаемые форумчане, помогите пожалуйста!

Есть HTML-таблица с формой:

|______|_A______|_B______|

|_Вася_|_input_A_|_input_B_|

|_Коля_|_input_A_|_input_B_|

<tr>
<td><input name="x:A;y:Вася;value:">
<td><input name="x:B;y:Вася;value:">

<tr>
<td><input name="x:A;y:Коля;value:">
<td><input name="x:B;y:Коля;value:">

Ввожу что-нибудь в первый input и в PHP в массиве POST получаю:

'x:A;y:Вася;value:' => 'введённое значение'

Foreach ($_POST as $key => $value), внутри складываю ключ и значение, получаю:

'x:A;y:Вася;value:введённое значение'

Вопрос:

Как мне получить в результате массив ['x' => 'A', 'y' => 'Вася', 'value' => 'введённое значение'] (то есть распарсить строку)?

Про разбить по разделителю ';', а потом по ':', знаю, но вдруг есть функция делающая это сама?

Или вообще всё это как-то по другому делается?

Прошу прощения за возможно туманную постановку задачи

 , ,

tonchikp
()

Правильный роутер

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php

1) Как правильно перенаправить все запросы на роутер, но тем не менее исключить перенаправление для стилей, js-скриптов, картинок, музыки, видео и прочего

2) Пробовал в регулярках поставить ^ и (css|js), не помогло, возможно я чего-то не понимаю

3) Почему на разных сайтах встречаются разные ключи, то [L], то [NC], в связи с этим ещё вопрос, написал правила для того чтобы защитить картинки от вставки на другие сайты, указал ключ [L], следующими строками идёт код который написал выше, будет ли он действовать после этого ключа, не очень понимаю как этот ключ работает (документацию читал, на разных сайтах искал ответ, но не понял дальше того что написано)

4) Опять же на некоторых сайтах рекомендуют схему index.php?param1=value1&param2=value2, как я понимаю получается GET-запрос, хотелось бы узнать мнения по этому поводу, удобно ли потом его разбирать, стоит ли этим направлением идти, как-то некрасиво выглядит и вроде если понадобится query_string, а знак вопроса уже занят, или они могут вместе быть?

5) Сходу ситуация, например нужно показать отчёт, на основе query_string скрипт получает год и выводит отчёт за этот год. Или есть более правильный способ?

 , ,

tonchikp
()

Ищу надёжный хостинг c PHP, MySQL

Уважаемые форумчане! Требуется ваша помощь!

Ищу надёжный, стабильный, дешёвый виртуальный хостинг.. Поделитесь пожалуйста своими идеями, мыслями..

Требования к хостингу:

* Виртуальный

* Надёжный

* Стабильный

* Дешёвый, до 200 рублей, лучше до 100 рублей (если есть)

* Обязательно без рекламы (будут посещать дети)

* Желательно рублёвый

* c PHP5

* c MySQL5, 1 база

* c PHPMyAdmin

* желательно c SQLite3

* от 5 сайтов на аккаунте

* Желательно безлимитный трафик, хотя пока вписываюсь в любые лимиты

* Дисковое пространство от 100 МБ, хотя некоторые из сайтов будут требовательные, от 0,5 ГБ

* Доступ к .htaccess

* Желательно с физическим расположением в России (благодаря закону о персональных данных)

* Естественно с FTP, 1 аккаунт

 

tonchikp
()

Тонкое ограничение доступа к ПО

Уважаемые форумчане! Требуется ваша помощь!

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

В наличии:

* Операционная система Linux (предположим Ubuntu-производный)

* Пользователь-A-взрослый(№1) (проще говоря умеющий бережно обращаться с системой)

* Пользователь-B-ребёнок(№1) (проще говоря лезущий везде и возможно нажимающий все клавиши подряд и всё такое)

* Пользователь-C-подросток(№1) (проще говоря лезущий везде и но в отличие от предыдущего желающий намеренно нанести вред системе, предположим удалить что-то чужое, или системное)

* ПО-1-Браузер(№2) (должен быть доступен всем)

* ПО-2-Файловый менеджер(№2) (должен быть доступен всем, однако ребёнок (а тем более подросток) чтобы видел только свой домашний каталог и не выше, если не возможно, то хотя бы остальное видел в режиме только для чтения)

* ПО-3-IDE(№2) (должна быть доступна только взрослому, для остальных не видна вовсе, словно не устанавливалась)

(№1) - Здесь важен именно фактор поведения, а возрастной признак дан условно, для лучшего представления..

(№2) - Здесь важен именно фактор ограничения доступа к ПО, причём тонкого ограничения, а тип ПО дан условно..

 ,

tonchikp
()

Ищу лёгкую СУБД

Уважаемые форумчане! Требуется ваша помощь!

Ищу аналог MySQL, СУБД, легкую в плане размера, потребляемых ресурсов, простоты работы с ней..

К примеру в сфере вэб-серверов, есть решения для больших задач, такие как Apache и nginx, а есть для задач поменьше, типа lighttpd, вот мне требуется решение именно из разряда лёгких, для дома..

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

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

Решение должно быть связано:

* Linux

* Bash

* или Perl

* или PHP(желательно без него)

* или Javascript (где-то видел и такую связь)

* web-браузер

 ,

tonchikp
()

Синхронизация FTP и локальной директории

Уважаемые форумчане! Требуется ваша помощь!

Работаю над сайтом в Linux и в связи с этим задача в синхронизации локальной директории с FTP-директорией.. Хотелось бы чтобы автоматически синхронизация начиналась при изменении файла и чтобы копировалось только изменившееся..

Посоветуйте пожалуйста что-нибудь.. До этого использовал FileZilla, сейчас пытаюсь написать скрипт на bash.. Хостинг бесплатный - есть только FTP!

Сходу приходит в голову:

  • lftp
  • curlftpfs
  • rsync

Хотелось бы двусторонней синхронизации со сжатием и проверкой хэшей (как RSYNC), или через монтирование (как CURLFTPFS).. Первый вариант наиболее простой и вроде мне подходит, но может что-то есть лучше.. Второй - очень капризный, любит тормозить и подвисать, с правами что-то ругается, под root пока только получилось добиться от него работы.. Третий - очень хитрый, даже два локальных каталога то не сразу скопировал, вобщем быстро не дался.. И вроде сам напрямую с FTP не работает.. В нём очень привлекает сжатие, хэши, двухсторонняя синхронизация.. В общем нравятся все трое, но все они с проблемами пока.. Может кто что получше вообще посоветует.. Или ключи какие-то, опции у этих трёх есть, о которых я не знаю..

И немного левый вопрос, но связанный с этой темой.. Thunar.. Как в нем избавиться от «призраков» монтирования, то есть предположим нахожусь в директории «/mnt», что-нибудь смонтировал ну предположим с помощью curlftpfs, но вижу не название новой директории, а типа ссылки, с полным путём, типа «/mnt/directory».. Проблема устраняется после перезапуска Thunar.. Но может тоже есть более правильное решение, да и почему это происходит, кто может объяснить?

 , , , ,

tonchikp
()

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