Как Передать Домен и Базу Данных с Hestia

Введение: В современном мире веб-разработки и управления серверами, где требуется гибкость и оперативность, ключевую роль играет возможность легко передавать ресурсы, такие как домены и базы данных, между пользователями. В этой статье мы рассмотрим, как использовать Hestia Control Panel для эффективной передачи домена пользователю hestia и переноса базы данных другому пользователю с помощью команды v-change-database-owner.

Основная Часть:

  1. Передача Домена:
    • Что такое Hestia Control Panel?
    • Почему важна передача домена?
    • Шаги для передачи домена пользователю hestia:
      • Вход в Hestia Control Panel.
      • Выбор домена для передачи.
      • Использование команды v-change-domain-owner.
      • Проверка передачи домена.
  2. Перенос Базы Данных:
    • Значение баз данных в управлении веб-ресурсами.
    • Процесс переноса базы данных:
      • Выбор базы данных для переноса.
      • Применение команды v-change-database-owner.
      • Важные аспекты безопасности при переносе.
      • Подтверждение успешного переноса.

Заключение: Передача домена и перенос базы данных с использованием Hestia Control Panel - это простые и эффективные процедуры, которые значительно облегчают управление веб-ресурсами. Следуя представленным здесь инструкциям, вы сможете быстро и безопасно осуществить необходимые изменения.

Nextcloud virtual dirctory/file/disk in macos

Без лишних слов как обычно

добавляем строчку
updateSegment=36
в секцию
[General]
в файл
/Users/UserName/Library/Preferences/Nextcloud/nextcloud.cfg

перезапускаем nextcloud
и включаем функцию

Auto mount without fstab

  • create file

/etc/systemd/system/var-nfs.mount

name file mast directory if /var/nfs name var-nfs.mount, if /nfs name nfs.mount

[Unit]
Description=Things devices
After=network.target

[Mount]
What=1.1.2.2:/minio/nfs
Where=/var/nfs
Type=nfs4
Options=rw
Options=_netdev,auto
DirectoryMode=0755

[Install]
WantedBy=multi-user.target
  • and enable service systemctl enable var-nfs.mount

this all, afte reboot this automount nfs

Добавление альтернативной версии PHP 8.1 на ISPmanager 5 Lite

Чтобы добавить собственную альтернативную версию PHP в ISPmanager, нужно создать два XML-файла.

Первый файл добавляет в Настройки → Возможности новый пункт и описывает для него форму Настройки → Возможности → Изменить. Например:
/usr/local/mgr5/etc/xml/ispmgr_mod_myphp.xml

HTML:
<mgrdata>
 <lang name="ru">
   <messages name="feature">
     <msg name="dname_altphp81">Альтернативная версия PHP 8.1</msg>
   </messages>
   <messages name="feature.edit">
     <msg name="package_ispphp81">My PHP 8.1</msg>
     <msg name="hint_package_ispphp81">Использовать PHP 8.1 в режиме CGI</msg>
     <msg name="package_ispphp81_mod_apache">Модуль PHP для Apache версии 8.1</msg>
     <msg name="hint_package_ispphp81_mod_apache">Возможность использовать PHP 8.1 в режиме модуля Apache</msg>
     <msg name="package_ispphp81_fpm">PHP 8.1 для PHP-FPM</msg>
     <msg name="hint_package_ispphp81_fpm">Возможность использования PHP 8.1 сервисом PHP-FPM</msg>
     <msg name="packagegroup_altphp81gr">PHP версии 8.1</msg>
     <msg name="hint_packagegroup_altphp81gr">Возможность использовать PHP версии 8.1</msg>
   </messages>
 </lang>
</mgrdata>

Второй файл описывает пакет добавляемой версии PHP. Например:
/usr/local/mgr5/etc/xml/ispmgr_features.d/my_php.xml

HTML:
<features>
       <feature name="altphp81" featuregroup="altphp">
        <packagegroup name="altphp81gr" type="select">
            <package name="ispphp81" dispname="PHP 8.1 CGI" primary="yes" recommended="yes">
                <systemname>isp-php81</systemname>
            </package>
            <if value="turn_off" hide="package_ispphp81_mod_apache" shadow="yes"/>
            <if value="turn_off" hide="package_ispphp81_fpm" shadow="yes"/>
        </packagegroup>
        <package name="ispphp81_fpm" dispname="PHP 8.1 PHP-FPM" recommended="yes">
            <systemname>isp-php81-fpm</systemname>
        </package>
        <package name="ispphp81_mod_apache" dispname="PHP 8.1 Apache module">
            <systemname>isp-php81-mod-apache</systemname>
        </package>
    </feature>
</features>

После добавления XML-файлов:
Перезапустите ISPmanager:

Код:
/usr/local/mgr5/sbin/mgrctl -m ispmgr exit

regulator power cpu

https://askubuntu.com/questions/604720/setting-to-high-performance

To view available speed governors use this command:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors 
performance powersave

If you do have more than one governor you can check what is currently in use with this command:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
powersave

To change your processor to performance mode use:

echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
performance

You will then notice CPU% utilization drop by about 5% but also notice speed will increase from about 1000 MHz to 3000 MHz and temperatures will spike by ~10 degree, depending on your processor:

ADD flatpak

  1. Install Flatpak

    To install Flatpak on Ubuntu 18.10 (Cosmic Cuttlefish) or later, simply run:

    
          $ sudo apt install flatpak
        

    With older Ubuntu versions, the official Flatpak PPA is the recommended way to install Flatpak. To install it, run the following in a terminal:

    
          $ sudo add-apt-repository ppa:alexlarsson/flatpak
          $ sudo apt update
          $ sudo apt install flatpak
        
  2. Install the Software Flatpak plugin

    The Flatpak plugin for the Software app makes it possible to install apps without needing the command line. To install, run:

    
          $ sudo apt install gnome-software-plugin-flatpak
        

    Note: the Software app is distributed as a Snap since Ubuntu 20.04 and does not support graphical installation of Flatpak apps. Installing the Flatpak plugin will also install a deb version of Software and result in two Software apps being installed at the same time.

  3. Add the Flathub repository

    Flathub is the best place to get Flatpak apps. To enable it, run:

    
          $ flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
        
  4. Restart

    To complete setup, restart your system. Now all you have to do is install some apps!

старт проекта на fin

rsync -avpz --exclude core --exclude themes/themename/node_modules --exclude vendor --exclude modules/contrib --exclude sites/default/files grenuy@uw-t.com:/var/www/grenuy/data/www/domain/ .

поправить права

chmod 755 sites/default && chmod 644 sites/default/settings.php

fin db import fileName.sql

сhange settings.php

Redmine после обновления некоторых плагинов в докерах редмайн перестал подниматся

в логах увидел низкую версию redmine_crm

Решается не очевидно но просто

создаем в папке plugins

Файл

pre-install.sh

С содержимым

bundle update redmine_crm

Набор полезных функций

aptitude install - гараздо "умнее" установка\удаление и т.д.

 

Логи конкретных функций

tail -f /usr/local/mgr5/var/ispmgr.log | grep "DEBUG action_sysinfo.cpp"

Уровень логировния

/usr/local/mgr5/etc/debug.conf

перезагрузка панели

/usr/local/mgr5/sbin/mgrctl -m ispmgr exit

 

Системные логи, хорошо что бы довести до ума сервер и не только

tail -f /var/log/syslog

 

Сменить версию пхп по умолчанию на всей системе(для меня актуально с установленой версией 8.0 но мало кто еще поддерживает)

sudo update-alternatives --set php /usr/bin/php7.4

Обновление БД c ispmanager

В данной статье будет показан способ обновления версии MariaDB, на сервере с операционной системой CentOS 7 и установленной панелью управления ISPmanager, с версии 5.5.60, которая ставится по умолчанию с ISPmanager, на версию 10.3. Таким же образом Вы можете увеличить версию MariaDB до 10.1, 10.2, 10.4, 10.5.

1. Для начала нам необходимо будет добавить нужный репозиторий в yum. Для этого:

1) Заходим на данный сайт: https://downloads.mariadb.org/mariadb/repositories/#mirror=cyanlink

2) В пункте «1. Choose a Distro», выбираем «CentOS».

3) В пункте «2. Choose a Release», выбираем версию Вашей операционной системы, в нашем случае «CentOS 7». Но кроме версии самой операционной системы, необходимо выбрать тип процессора.
Для определения версии процессора, введем на сервере команду:

uname -p

 

4) В пункте «3. Choose a Version», выбираем нужную версию MariaDB. В нашем случае это «10.3 [Old Stable]».

5) Снизу появится список настроек, которые нам необходимо будет скопировать:

Добавляем данный репозиторий в наш yum:

vi /etc/yum.repos.d/mariadb.repo

 

И в открывшемся окне вставляем то, что у нас получилось после пункта 4), в нашем случае это:

# MariaDB 10.3 CentOS repository list - created 2020-02-26 15:31 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

 

2. Останавливаем веб-сервера, MariaDB и производим обновление:

systemctl stop mariadb httpd nginx
yum update MariaDB-server MariaDB-client

 

Как правило, после обновления, MariaDB перестанет запускаться. Исправим все проблемы:

3. Если возникла проблема:

[ERROR] mysqld: Can't create/write to file '/var/run/mysqld/mysqld.pid' (Errcode: 2 "No such file or directory")
[ERROR] Can't start server: can't create PID file: No such file or directory

 

Тогда, открываем файл:

vi /etc/tmpfiles.d/mariadb.conf

 

Добавляем в него:

 

d /var/run/mysqld 0755 mysql mysql -

 

После чего, последовательно выполняем несколько команд:

mkdir /var/run/mysqld
chown mysql: /var/run/mysqld
chmod 0755 /var/run/mysqld
systemctl daemon-reload
reboot

 

4. Запускаем MariaDB и добавляем в автозагрузку:

 

systemctl start mariadb
systemctl enable mariadb

 

5. Если не делали reboot, тогда запускаем веб-сервера:

systemctl start nginx httpd

 

6. Завершаем обновление MariaDB:

mysql_upgrade
systemctl restart mariadb

 

В ISPmanager все еще будет отображаться старая база данных, а также, невозможно будет работать с базами данных. Для исправления данной проблемы:

7. Создаем символическую ссылку:

ln -s /usr/sbin/mysqld /usr/libexec/mysqld

 

8. Настраиваем корректное отображение новой версии MariaDB в ISPmanager:

Заходим в ISPmanager под пользователем root, переходим в раздел «Серверы баз данных», выбираем наш сервер базы данных и нажимаем «Именить»:

Ставим галку на «Установить новый пароль» и жмем «Ок».

Обновление базы данных MariaDB было завершено. Для проверки установленной версии MariaDB, воспользуйтесь командой:

mysql -V

MF4410 установка драйвера Windows 10, сканер устанавливаетвся принтер нет

Счастливый обладатель принтера, но с Windows 10 возникает проблема

после установки драйвера доступен только сканер

что нужно сделать

удаляем сканер

 

Заходим в

MF4450_4430_4410_MFDrivers_W64_RU\DRIVERS\russian\x64\Driver

правой кнопкой по файлу CNLB0RA64.INF (СНАЧАЛА ПО ЭТОМУ ФАЙЛУ!)

и установить

Установился принтер!

Теперь сканер

правой кнопкой по файлу MF38SCN.INF и установить

Готово

Hyper-V на Windows 10 home

Просто создать bat файл с содержимым

pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V -All /LimitAccess /ALL
pause

И запутиь от администратора и после выполнения согласиться на перезагрузку

проверено на Windows 10 home 2004 все работает

ISP Let’s Encrypt cli update

Автопродление сертификатов

Продление сертификатов проверяем каждый день через крон в 03:51 ночи:

# crontab -l -u root | grep letsencrypt
## ISPmanager letsencrypt cert update check
51 3 * * * /usr/local/mgr5/sbin/cron-ispmgr sbin/mgrctl -m ispmgr letsencrypt.check.update >/dev/null 2>&1

При истечении 3 месяцев - сертификат будет продлен автоматически.

Как вручную запустить выдачу сертификата Let's Encrypt в ISPManager 5

Для того чтобы вручную запустить процесс выдачи сертификата Let's Encrypt - можно использовать команду:

# /usr/local/mgr5/sbin/mgrctl -m ispmgr letsencrypt.periodic

Drupal 8 optimization image + afto add webp files

add

...
"require": {
....
"drupal/imageapi_optimize": "^4.0@beta",
"drupal/imageapi_optimize_binaries": "^1.0@alpha",
"drupal/imageapi_optimize_resmushit": "^2.0@beta",
"drupal/imageapi_optimize_tinypng": "^1.1@beta",
"drupal/imageapi_optimize_webp": "^2.0@beta"
}

composer update
drush en imageapi_optimize imageapi_optimize_binaries imageapi_optimize_resmushit imageapi_optimize_tinypng imageapi_optimize_webp -y

 

settings (add post processing)

/admin/config/media/imageapi-optimize-pipelines

 

in imagestyle select postprocess

 

Настроить ssh.exe вместо putty

В windows 10 уже есть интегрирован ssh.exe(наконец-то!) и winscp можно настроить так что бы putty, как не крути, более тяжелая программа вообще не запускалась

делается просто

 %SystemRoot%\Sysnative\OpenSSH\ssh.exe !U@!@ -p !# -t "cd !/ ; /bin/bash"

Clone ssd to another ssd less size

Казалось бы все просто, но это сделало мой день

SSD не нужно дефрагментировать, пока тебе не нужно перенести данные ))))

хороша тулза

PerfectDisk

  1. I downloaded the free app PerfectDisc, installed
  2. on 'Global Settings' I selected and ticked: PerfectDisk manages book and prefetch files'
  3. right click on C: - Drive preferences - select: 'Default optimization method' = 'Prep for Shrink' and 'Free Space search method' = 'Forward'
  4. now start defragging (play button)
  5. try also to turn on 'boot time defrag', and press the 'boot time defrag' button in the upper menu (requires restart)

На винде я еще уменьшил диск до диска донора, но не факт что нужно было

Клон делал с помощью

AOMEI Partition Assistant Technician Edition 8.8

Fail2ban Основные команды

Как показать заблокированные IP-адреса с клиентом Fail2ban

С помощью Fail2ban очень просто отобразить список заблокированных IP-адресов. Сначала вы должны выбрать, в какой тюрьме вы хотите показать заблокированные IP-адреса. Чтобы получить активные тюрьмы, наберите:

fail2ban-client status

Затем вы должны выбрать тюрьму, чтобы показать запрещенные IP-адреса с этой тюрьмой

fail2ban-client status <JAIL-NAME>

Например, чтобы показать запрещенные IP-адреса в типе sshd jail:

fail2ban-client status sshd

Вот и все, если вы хотите вручную разблокировать IP:

fail2ban-client set <JAIL-NAME> unbanip <IP-ADDRESS>

И, наконец, если вы хотите вручную заблокировать IP:

fail2ban-client set <JAIL-NAME> banip <IP-ADDRESS>

Drupal 8 commerce2 add custom field checkout


https://www.drupal.org/project/commerce_checkout_order_fields. Just enable it, go to /admin/commerce/config/order-types/default/edit/form-display, scroll down, enable 'Checkout' view, drag/drop fields on the Checkout view, and then go to /admin/commerce/config/checkout-flows/manage/default and add 'Order Fields: Checkout' pane to a step you want. Enjoy

Некие команды для ./occ

Выполнять от юзера www-data

docker exec -it -u 82 dockername /bin/sh

./occ upgrade - обновляет базу

./occ files:scan --all

./occ files:scan grenuy
./occ files:scan --path "grenuy/files/Share uWorld"
sudo -u www-data php occ files:scan --help
  Usage:
  files:scan [-p|--path="..."] [-q|--quiet] [-v|vv|vvv --verbose] [--all]
  [user_id1] ... [user_idN]

Arguments:
  user_id               will rescan all files of the given user(s)

Options:
  --path                limit rescan to the user/path given
  --all                 will rescan all files of all known users
  --quiet               suppress any output
  --verbose             files and directories being processed are shown
                        additionally during scanning
  --unscanned           scan only previously unscanned files

Index column size too large. The maximum column size is 767 bytes.

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

mysql

set global innodb_file_format = BARRACUDA;

set global innodb_large_prefix = ON;

SET GLOBAL innodb_default_row_format = DYNAMIC;

mount USB media in wls(windows linux)

Good news, it is now possible to mount USB media (including FAT formated) and network shares with drvfs on Windows 10:

Mount removable media: (e.g. D:)

$ sudo mkdir /mnt/d
$ sudo mount -t drvfs D: /mnt/d

To safely unmount

$ sudo umount /mnt/d

You can also mount network shares without smbfs:

$ sudo mount -t drvfs '\\server\share' /mnt/share

You need at least Build 16176 so you might have to opt-in to the Windows Insider programm and then update Windows. Source: https://blogs.msdn.microsoft.com/wsl/2017/04/18/file-system-improvements-to-the-windows-subsystem-for-linux/

Новые бэкапы ISPtar в ISPmanager

Компания ISPsystem в панелях ISPmanager начиная с версии 5.51 выпустила новую версию бэкапов.
Называются ISPtar.
Сюда буду писать интересные фичи и ошибки.

Бэкап обного пользователя

ISPmanager 5 Lite
sbin/backup2 имя_пользователя

ISPmanager 5 Business
sbin/backup2_pro имя_пользователя

Если бэкап за сегодня есть а потестить надо, то указываем фэйковую дату:
bin/backup2_pro    user  --date 2016-04-01

Ошибка:
backup ERROR isptar finished with error 1. Output: No header found
Проблема в бинарнике ISPtar? бэкапим старый, ставим новый:
Можно командой
Centos 6 Centos 7
Debinan 7 Debian 8
wget -O /usr/local/mgr5/sbin/isptar http://sis-admin.su/wp-content/uploads/2016/01/ваша_версия_tar

Распаковка бэкапов вручную

Переходим в папку с бэкапом:

/usr/local/mgr5/sbin/isptar -x F2016-10-18.user.tgz data/www/dipris.ru/ -R /var/www/user/site.ru

Где

F2016-10-18.user.tgz — название бэкапа, берётся из файла F2016-10-18.user.tgz.part1 Такого файла нет.

data/www/dipris.ru/ — Файлы какого сайта необходимо восстановить

/var/www/user/site.ru — Куда восстановить данные

Базы лежат в папке .system/

Пример распаковки базы base:

/usr/local/mgr5/sbin/isptar -x F2016-10-18.user.tgz .system/db.mysql.base -R /var/www/user/site.ru

Полная документация разработчика

Удаление 5 миллионов файлов

Обычно предлагается удалять через find и рабочий вариант, но в моем случаи 1.5млн удаляло часов 10 что недопустимо долго так перебирать пошел другим путем через цыклы и маски

for i in {a..z}
  do 
	rm /var/www/*/data/www/*/system/sessions/sess_$i[a-c]*
	rm /var/www/*/data/www/*/system/sessions/sess_$i[d-g]*
	rm /var/www/*/data/www/*/system/sessions/sess_$i[h-k]*
	rm /var/www/*/data/www/*/system/sessions/sess_$i[l-n]*
	rm /var/www/*/data/www/*/system/sessions/sess_$i[p-r]*
	rm /var/www/*/data/www/*/system/sessions/sess_$i[s-v]*
	rm /var/www/*/data/www/*/system/sessions/sess_$i[w-y]*
	rm /var/www/*/data/www/*/system/sessions/sess_$i[y-z]*
	rm /var/www/*/data/www/*/system/sessions/sess_$i[0-2]*
	rm /var/www/*/data/www/*/system/sessions/sess_$i[3-5]*
	rm /var/www/*/data/www/*/system/sessions/sess_$i[6-8]*
	rm /var/www/*/data/www/*/system/sessions/sess_$i[8-9]*
	rm /var/www/*/data/www/*/system/sessions/sess_$i*
 done



 for i in {0..9}
  do 
	rm /var/www/*/data/www/*/system/sessions/sess_$i[a-c]*
	rm /var/www/*/data/www/*/system/sessions/sess_$i[d-g]*
	rm /var/www/*/data/www/*/system/sessions/sess_$i[h-k]*
	rm /var/www/*/data/www/*/system/sessions/sess_$i[l-n]*
	rm /var/www/*/data/www/*/system/sessions/sess_$i[p-r]*
	rm /var/www/*/data/www/*/system/sessions/sess_$i[s-v]*
	rm /var/www/*/data/www/*/system/sessions/sess_$i[w-y]*
	rm /var/www/*/data/www/*/system/sessions/sess_$i[y-z]*
	rm /var/www/*/data/www/*/system/sessions/sess_$i[0-2]*
	rm /var/www/*/data/www/*/system/sessions/sess_$i[3-5]*
	rm /var/www/*/data/www/*/system/sessions/sess_$i[6-8]*
	rm /var/www/*/data/www/*/system/sessions/sess_$i[8-9]*
	rm /var/www/*/data/www/*/system/sessions/sess_$i*
 done

Или удалить файлы, которые старше семи дней:

for f in /tmp/logs/*.log
do
  find $f -mtime +7 -exec rm {} \;
done

Удаление заняло несколько минут времени.

Windows 10 subsystem ubuntu apache2 + mysql

sudo su

apt update

apt install apache2 mysql

nano /etc/apache2/sites-available/sites.loc.conf

# Place any notes or comments you have here
# It will make any customisation easier to understand in the weeks to come

# domain: domain1.com
# public: /home/demo/public_html/domain1.com/

<VirtualHost *:80>

  # Admin email, Server Name (domain name) and any aliases
  ServerAdmin webmaster@domain1.com
  ServerName  sites.loc
  ServerAlias www.sites.loc


  # Index file and Document Root (where the public files are located)
  DirectoryIndex index.php
  DocumentRoot /mnt/c/work/website/sites.loc/html


  # Custom log file locations
  LogLevel warn
  ErrorLog /var/log/apache2/error-mydomainname.com.log
  CustomLog /var/log/apache2/access-mydomainname.com.log combined

</VirtualHost>

add in

nano /etc/apache2/apache2.conf

<Directory /mnt/c/work/website/*>                                                                                                      Options Indexes FollowSymLinks MultiViews                                                                               AllowOverride All                                                                                                       Order allow,deny                                                                                                        allow from all                                                                                                          Require all granted                                                                                              </Directory>   

a2ensite sites.loc

service apache2 restart

add in c:\Windows\System32\drivers\etc\hosts

127.0.0.1 cprice.loc

a2enmod rewrite

service apache2 restart

Find the php.ini on your server. In wamp you click on the toolbar icon -> select PHP -> select php.ini

Push ctrl+ f and find "realpath_cache_size" . Remove the semi-colon at the beginning of the line and make it =16M instead of 16k .

This all

Что бы скачать с googledrive любые по размеру файлы без вопросов нужно подменить FILEID

wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=FILEID' -O- | sed -rn 's/.confirm=([0-9A-Za-z_]+)./\1\n/p')&id=FILEID" -O FILENAME && rm -rf /tmp/cookies.txt

Легкая установка разных версий руби

Open your terminal and run

\curl -sSL https://get.rvm.io | bash -s stable
When this is complete, you need to restart your terminal for the rvm to work.

Now, run rvm list known

This shows the list of versions of the ruby.

Now, run rvm install ruby-2.4.1

If you type ruby -v in the terminal, it still shows you ruby 2.0.

To use the latest installed version. Run rvm use ruby-2.4.1

To set this as the default version, run rvm use ruby-2.4.1 --default

install rails

gem install rails -v 4.2
gem install passenger
passenger-install-apache2-module

SSL https free auto crbot

1. Скачиваем сам CERBOT:

Код:
wget https://dl.eff.org/certbot-auto

2. Устанвливаем права на CERBOT:

Код:
chmod a+x certbot-auto

3. настраиваем "webroot-path" папка доступна из вне

/etc/letsencrypt
authenticator = webroot
webroot-path = /var/www/grenuydev/data/www/dev.uw-t.com
post-hook = service nginx reload
text = True

./certbot-auto certonly --webroot

test auto renew
certbot-auto renew --dry-run

renew auto
certbot-auto renew --no-self-upgrade

ngnix config:
add file


# cat /etc/nginx/acme
location ^~ /.well-known/ {
proxy_pass http://91.203.5.41:81;
proxy_redirect http://91.203.5.41:81/ /;
root /var/www/grenuydev/data/www/dev.uw-t.com;
}


include acme;
include /usr/local/ispmgr/etc/nginx.inc;
listen 91.203.5.41:443 ssl;
ssl_certificate /etc/letsencrypt/live/example.dev.uw-t.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.dev.uw-t.com/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 SSLv2 SSLv3;

Может пригодиться конвертировать ключи

openssl rsa -outform der -in private.pem -out private.key
openssl x509 -outform der -in your-cert.pem -out your-cert.crt

SSH создать публичный ключ, добавить на машину

Создать ключ если еще не созданн

mkdir ~/.ssh
ssh-keygen -t rsa -q -N '' -f ~/.ssh/id_rsa

Копируем приватный ключ на сервер(свой сервер подставляем)
ssh-copy-id -i ~/.ssh/id_rsa.pub root@example.com

Все теперь можно логиниться без пароля

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

Обновить в Debian php с 5.4 до 5.5 или 5.6

1. sudo nano /etc/apt/sources.list
2. добавить строчки если хотите до 5.5

deb http://packages.dotdeb.org wheezy-php55 all
deb-src http://packages.dotdeb.org wheezy-php55 all

или

deb http://packages.dotdeb.org wheezy-php56 all
deb-src http://packages.dotdeb.org wheezy-php56 all

3. apt-get update
но скорее всего не сможет обновить проблема с ключами бла бла лечиться тдвумя способами
3.1.
gpg --keyserver packages.dotdeb.org --recv-key E9C74FEEA2098A6E
gpg -a --export E9C74FEEA2098A6E | sudo apt-key add -

или
wget http://www.dotdeb.org/dotdeb.gpg
apt-key add dotdeb.gpg

4. apt-get update
5. apt-get install php5
6. service apache2 restart

ispmanager 4 change phpversion

Два шага, 1 собрать PHP с исходников(другая тема) суть ее в том что бы в отедльных папках были отдельные версии PHP в инете куча статей, может и у меня дойдут руки.
Второй шаг 3 файла создать и перезапустить ispmanager

killall ispmgr

По пути /usr/local/ispmgr/etc
создаем файл ispmgr_mod_phpversion.xml с содержимым

<?xml version="1.0" encoding="UTF-8"?>
  <mgrdata>
    <handler name="phpversion.pl" type="cgi">
      <func>phpversion</func>
      <func>phpversion.edit</func>
      <func>phpversion.delete</func>
      <func>userphpversion</func>
      <func>userphpversion.enable</func>
   </handler>
 
   <metadata name="phpversion" type="list" key="item">
     <toolbar>
       <toolbtn func="phpversion.edit" type="new"  img="t-new" name="new"/>
       <toolbtn func="phpversion.edit" type="edit" img="t-edit" name="edit" default="yes"/>
       <toolbtn func="phpversion.delete" type="group" img="t-delete" name="delete"/>
     </toolbar>
     <coldata>
       <col sort="alpha" sorted="yes" name="item" type="data"/>
       <col sort="alpha" name="path" type="data"/>
     </coldata>
   </metadata>
 
   <metadata name="phpversion.edit" type="form">
     <form>
       <field name="item">
         <input type="text" name="item" />
       </field>
       <field name="path">
         <input type="text" name="path" />
       </field>
     </form>
   </metadata>
 
   <metadata name="userphpversion" type="list" key="item">
     <toolbar>
       <toolbtn func="userphpversion.enable" type="edit"  img="t-on" name="enable" default="yes"/>
     </toolbar>
     <coldata>
       <col sort="alpha" sorted="yes" name="item" type="data"/>
       <col name="props" sort="prop">
         <prop name="active" onimg="t-on" defimg="t-off"/>
       </col>
     </coldata>
   </metadata>
 
   <mainmenu level="7">
     <node name="tool">
       <node name="phpversion"/>
     </node>
   </mainmenu>
 
   <mainmenu level="5">
     <node name="tool">
       <node name="userphpversion"/>
     </node>
   </mainmenu>
 
   <lang name="en">
     <messages name="desktop">
       <msg name="menu_phpversion">PHP versions</msg>
       <msg name="menu_userphpversion">PHP version</msg>
     </messages>
     <messages name="phpversion">
       <msg name="title">PHP versions</msg>
       <msg name="item">Availible versions</msg>
       <msg name="path">Path to binary</msg>
       <msg name="msg_phpversion_delete">Delete version</msg>
       <msg name="hint_new">Add version</msg>
       <msg name="hint_edit">Edit version</msg>
       <msg name="hint_delete">Delete version</msg>
     </messages>
     <messages name="phpversion.edit">
       <msg name="title">Edit version</msg>
       <msg name="title_new">New version</msg>
       <msg name="item">Version value</msg>
       <msg name="path">Path to binary file</msg>	
       <msg name="hint_item">Version value</msg>
       <msg name="hint_path">Path to php-cgi (e.g. /usr/bin/php-cgi)</msg> 
     </messages>
     <messages name="userphpversion">
       <msg name="title">PHP version in use</msg>
       <msg name="item">Availible versions</msg>
       <msg name="hint_enable">Choose version</msg>
     </messages>
   </lang>
   <lang name="ru">
     <messages name="desktop">
       <msg name="menu_phpversion">Версии PHP</msg>
       <msg name="menu_userphpversion">Версия PHP</msg>
     </messages>
     <messages name="phpversion">
       <msg name="title">Версии PHP</msg>
       <msg name="item">Доступные версии</msg>
       <msg name="msg_phpversion_delete">Удалить версию</msg>
       <msg name="hint_new">Добавить версию</msg>
       <msg name="hint_edit">Править версию</msg>
       <msg name="hint_delete">Удалить версию</msg>
     </messages>
     <messages name="userphpversion">
       <msg name="title">Используемая версия PHP</msg>
       <msg name="item">Доступные версии</msg>
       <msg name="hint_enable">Включить версию</msg>
     </messages>
     <messages name="phpversion.edit">
       <msg name="title">Править версию</msg>
       <msg name="title_new">Новая версия</msg>
       <msg name="item">Значение версии</msg>
       <msg name="path">Путь до исполняемого файла</msg>
       <msg name="hint_item">Значение версии (5.1.6, 5.2.10) </msg>
       <msg name="hint_path">Путь до бинарника (например, /usr/bin/php-cgi)</msg>
     </messages>
   </lang>
 </mgrdata>

По пути /usr/local/ispmgr/addon
создаем два файла, первый phpversion(в конце пустая строка обязательная в редакторе не отображается)

5.4 /usr/bin/php-cgi
5.5 /usr/local/share/phpfarm/inst/php-5.5.32/bin/php-cgi
5.6.21 /usr/local/share/phpfarm/inst/php-5.6.21/bin/php-cgi
7.0 /usr/local/share/phpfarm/inst/php-7.0.6/bin/php-cgi

второй файл по пути /usr/local/ispmgr/addon
phpversion.pl

#!/usr/bin/perl
BEGIN { push @INC, '/usr/local/ispmgr/lib/perl' }
 
use Mgr;
use CGI qw/:standard/;
use strict;
use warnings;
 
my $Q = new CGI;
my $func = $Q->param( "func" );
my $conf = '/usr/local/ispmgr/addon/phpversion';
print "<doc>";
 
my $user = $ENV{REMOTE_USER};
if (!defined $user) {
  print "<error>Authentication failed!</error>";
  print "</doc>";
  exit 0;
}
 
if( $func eq 'phpversion' ){
	&List;
} elsif( $func eq "phpversion.delete" ){
	&Delete;
} elsif( $func eq "phpversion.edit" ){
	if(	$Q->param( "sok" ) ){
		if( $Q->param( "elid" ) ){
			&Set;
		} else{
			&New;
		}
		print "<ok/>";
	} else{
		&Get;
	}
}
elsif ($func eq 'userphpversion') {
	&UserList;
}
elsif ($func eq 'userphpversion.enable') {
	&UserSet;
}
 
print "</doc>";
exit 0;
 
sub List {
	if( open( IN, $conf ) ){
		while( <IN> ){
			chomp;
			my @t = split ' ', $_;
			print "<elem><item>" . $t[0] . "</item><path>" . $t[1] ."</path></elem>";
		}
		close( IN );
	}
}
 
sub UserList {
	my $wrapper_path = "/var/www/$user/data/php-bin/php";
	if ( open( WRAPPER, $wrapper_path ) ) {
		my $wrapper = <WRAPPER>;
		chomp $wrapper;
 
		if( open( IN, $conf ) ) {
        	        while( <IN> ){
	                        chomp;
                	        my @t = split ' ', $_;
        	                print "<elem><item>" . $t[0] . "</item>";
				print "<active />" if ( $wrapper eq "#!" . $t[1] );
				print "</elem>";				
	                }
        	        close( IN );
	        }
		close( WRAPPER );
	}
}
 
#sub Get {
#	my $elid = $Q->param( "elid" );
#        print "<elid>$elid</elid><item>$elid</item>" if( $elid );
#}
 
 
sub Get {
	my $elid = $Q->param( "elid" );
        my $ok = 0;
 
        if( open( IN, $conf ) ) {
		for( <IN> ) {
			chomp;
			my @t = split ' ', $_;
                       	if( $t[0] eq $elid ) {
				print '<elid>' . $t[0] . '</elid><item>' . $t[0] . '</item><path>' . $t[1] .'</path>' ;
			}
                        $ok = 1;
                } 
                close( IN );
        }
 
        if( !$ok ) {
                print "<error>Item not found</error>";
        }
}
 
sub Set {
	my $elid = $Q->param( "elid" );
	my $item = $Q->param( "item" );
        my $path = $Q->param( "path" );
	my $ok = 0;
 
	if( open( IN, $conf ) ){
		if( open( OUT, ">$conf.new" ) ){
			for( <IN> ){
				chomp;
				my @t = split ' ', $_;
				if( $t[0] eq $elid ){
					print OUT "$item $path\n";
					$ok = 1;
				} else {
					print OUT $t[0] . ' ' . $t[1] . "\n";
				}
			}
			close( OUT );
		}
		close( IN );
	}
 
	if( $ok ){
		rename( "$conf.new", $conf );
		print "<ok/>";
	} else {
		print "<error>Item hasn`t been updated</error>";
	}
}
 
sub UserSet {
    my $wrapper_path = "/var/www/$user/data/php-bin/php";
    my $php_ini = "/var/www/$user/data/php-bin/php.ini";
 
    unless ( -e $php_ini ) {;
        print "<error>$php_ini not found</error>";
        return;
    };
    my ($login, $pass, $uid, $gid) = getpwnam($user) or print "<error>$user not in passwd file</error>";
 
    chown $uid, $gid, $php_ini or print '<error>you are not a superuser</error>';
    chmod 0644, $php_ini or print '<error>you are not a superuser</error>';
 
    my $elid = $Q->param( "elid" );
    my $item = $Q->param( "item" );
 
    if( open( IN, $conf ) ){
        if( open( OUT, ">", $wrapper_path ) ){
            for( <IN> ){
                chomp;
                my @t = split ' ', $_;
                if( $t[0] eq $elid ){
                    print OUT  '#!' . $t[1] . "\n";
                }
            }
            close( OUT );
        }
        close( IN );
    }
 
    my $check_for_timezone = `cat $php_ini | grep date.timezone`;
    my $is_php_53 = `cat $wrapper_path | grep 5.4`;
 
    # need for bitrix install, only for 5.4
    if ( $is_php_53 && !$check_for_timezone && open( OUT, ">>", $php_ini ) ) {
        print OUT "date.timezone='Europe/Moscow'\n";
        close( OUT );
    }
 
    my $check_for_maillog = `cat $php_ini | grep mail.log`;
    if ( $is_php_53 && !$check_for_maillog && open( OUT, ">>", $php_ini ) ) {
        print OUT "mail.log = \"/var/www/$user/data/mail.log\"\n";
        print OUT "mail.add_x_header = On\n";
        close( OUT );
    }
 
    print "<ok>restart</ok>";
}
 
sub New {
	my $elid = $Q->param( "elid" );
	my $item = $Q->param( "item" );
	my $path = $Q->param( "path" );
	if( open( ADD, ">>$conf" ) ){
		print ADD "$item $path\n";
		close( ADD );
		print "<ok/>";
	} else {
		print "<error>Item hasn`t been added</error>";
	}
}
 
sub Delete {
	my $elid = $Q->param( "elid" );
 
	if( open( IN, "$conf" ) ){
		if( open( OUT, ">$conf.new" ) ){
			for( <IN> ){
				chomp;
				my @t = split ' ', $_;
				print OUT $t[0] . ' ' . $t[1] . "\n" if( $t[0] ne $elid );
			}
			close( OUT );
		}
		close( IN );
	}
 
	rename( "$conf.new", "$conf" );
	print "<ok/>";
}

Скачать пример плагина

Drupal настройка bootstrap темы radix

Когда включается navbar

1
$grid-float-breakpoint:

Настройка ширины(в конце)

1
2
3
// Small screen / tablet
$container-tablet:             
$container-sm:                  <a href="http://my-opinions.info/drupal/drupal-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-bootstrap-%d1%82%d0%b5%d0%bc%d1%8b-radix#more-350" class="more-link">Читать далее <span class="screen-reader-text">Drupal настройка bootstrap темы radix</span></a>

Перемены отвечающие момент отсечек

1
2
3
4
5
6
7
8
// Note: Deprecated $screen-xs and $screen-phone as of v3.0.1
$screen-xs:
// Note: Deprecated $screen-sm and $screen-tablet as of v3.0.1
$screen-sm:
// Note: Deprecated $screen-md and $screen-desktop as of v3.0.1
$screen-md: 
// Note: Deprecated $screen-lg and $screen-lg-desktop as of v3.0.1
$screen-lg:

Что бы добавить шрифт в ckeditor

1
2
config.font_names =
    'Arial;Times New Roman;Verdana;GothamPro;Lora;OpenSans';

Gulp example projext sass jade browsync on windows

Предполагаеться что в системе установленый NODEJS

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

Run -> control.exe sysdm.cpl,System,3
Name: NODE_PATH
Value: %AppData%\npm\node_modules

1. npm install gulp -g
2. npm init
3. npm install rimraf gulp-jade gulp-sass gulp-inline-image gulp-autoprefixer gulp-plumber gulp-directory-sync browser-sync gulp-concat -g
4. npm link rimraf gulp-jade gulp-sass gulp-inline-image gulp-autoprefixer gulp-plumber gulp-directory-sync browser-sync gulp-concat
5. npm install gulp-html5-lint gulp-purifycss gulp-uglify gulp-imagemin imagemin-pngquant gulp-csso -g
6. npm link gulp-html5-lint gulp-purifycss gulp-uglify gulp-imagemin imagemin-pngquant gulp-csso

7. розпаковываем архив gulp

8. cmd -> gulp

В архиве два варианта вместе с jade и без него.
удачи 🙂

Быстрая устанвока всех программ на Windows

Предполагается установка через https://chocolatey.org/
Это больше заметка для себя что бы быстро востановить необходимые программы для работы
cmd от администратора, выполняем:

@powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin

переоткрываем cmd выполняем

cinst 7zip.commandline aimp autohotkey.portable chocolatey ChocolateyGUI curl Cygwin filezilla Firefox foxitreader git.install GoogleChrome javaruntime jre8 keepass.install nodejs.install notepadplusplus.install Opera picasa PowerShell putty.portable qbittorrent skype sublimetext3 teamviewer8 totalcommander vlc Wget windirstat winrar winscp.install -y

Затем устанавливаем photoshop, office, xampp
Востанавливаем winlin(утилиты позволяющие работать на Windows с такими командами как drush php и т.д.)

дописываем patch

свойства "мой компютер"->Дополнительные параметры системы->Переменные среды->Path->изменить

C:\tools\cygwin;C:\xampp1\mysql\bin;C:\winlin\windrush;C:\winlin\Ruby22-x64\bin;C:\xampp1\php;C:\Program Files\Git\cmd;C:\winlin\windrush

Готово

Commit in arhive

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

git diff-tree -r --no-commit-id --name-only --diff-filter=ACMRT idCommit | tar -czf file.tgz -T -

idCommit - наш индификатор коммита

Установка Drupal через drush

Установить друпал можно через командную строку в одну строку!!!! Ну если быть точнее через две.

#Первая строка скачивает drupal
drush dl drupal

#установка друпалла
drush site-install standard --account-name=LoginAdmin --account-pass=passwordAdmin --db-url=mysql://UserDB:PasswordDB@localhost/NameDB

Больше команд можно почитать здесь

Сброс DNS в Windows 10 \ 8 \ 8.1

cmd от админа
1. ipconfig /release
2. ipconfig /renew (может долговато выполняться)
3. ipconfig /flushdns

Все, вот так просто три команды и проблем нет 🙂

Попытка получить тиц 10

Первый шаг, попытаюсь зарегаться на сайте dir.ikernel.org, они очень просили опубликовать обратную ссылку, вот и опубликую здесь 🙂

Глобальный каталог сайтов

Drush worck shop

1. Установка друпал

#скачать ядро
drush dl drupal-7

#перенести файлы в корень
mv drupal-7.x-dev/{.,*}* .
#удалить пустую папку
rm -r drupal-7.x-dev/

#фикс прав
find * -type d -exec chmod 755 {} \;
find * -type f -exec chmod 644 {} \;

#установка друпалла
drush site-install standard --account-name=LoginAdmin --account-pass=passwordAdmin --db-url=mysql://UserDB:PasswordDB@localhost/NameDB

#отключаем 2 лишние модули
drush dis dashboard overlay shortcut toolbar

#качаем и включаем нужные моддули (можно сначала скачать через dl)

#пример с зависимостями
drush en views webform module_filter

#установка выбраной версии
drush dl og-1.3 # shortcut for pm-download
drush -y en og # shortcut for pm-enable

# отключаем с зависимостями (можно глянуть на модуль i18n)
drush dis ctools

#устанавливаем набор модулей к примеру

drush en admin_menu admin_menu_toolbar l10n_update module_filter page_manager views_content ctools_custom_content ctools views views_ui transliteration token pathauto rules rules_admin entity devel basic wysiwyg wysiwyg_filter lightbox2 plupload libraries filefield_sources filefield_sources_plupload ocupload views_bulk_operations admin_views i18n

-- добавляем языка включения отключения и тёдё
drush language-add ru de

drush language-disable de ru

drush language-enable ru

drush language-default ru

#подкачка языка
drush l10n-update-status
drush l10n-update-refresh
drush l10n-update --languages=ru

другие команды
drush core-cron
drush up
drush ccй

drush ard — создание бэкапа сайта. Делает бэкап как самого сайта, так и базы данных, все это сохраняется в tar.gz архиве. Невероятно удобная вещь.
drush arr path — восстановление бекапа созданного командой drush ard. Заместо path нужно

drush arr ./example.tar.gz --destination=/var/www/example.com/docroot --db-url=mysql://root:@127.0.0.1/gates

#пробежаться и обновит все

for i in /home/www/grenuy/data/www/*/sites/.. ; do cd "$i"; drush updb; drush en update; yes | drush pm-update

DRUSH

drush up — обновление ядра и модулей Drupal.
drush cc all — очистка всего кеша сайта.
drush pm-list — список всех модулей и тем установленных на сайте, а также их версии и статус активности.
drush dl module — загружает модуль или тему. Несколько значений пишится через пробел.
drush en module — включает указанный модуль или тему.
drush dis module — выключает указанный модуль или тему.
drush ard — создание бэкапа сайта. Делает бэкап как самого сайта, так и базы данных, все это сохраняется в tar.gz архиве. Невероятно удобная вещь.
drush arr path — восстановление бекапа созданного командой drush ard. Заместо path нужно указать путь до архива, включая его название и расширение.

Установка drupall

drush dl drupal-7.x
drush site-install standard --account-name=admin --account-pass=admin --db-url=mysql://YourMySQLUser:RandomPassword@localhost/YourMySQLDatabase

Розпаковка архива на другой сервер
drush arr nivea.20150415_200549.tar.gz --db-url=mysql://root@localhost:3306/nivea

drush uli - получить разовую ссылку на вход для админа
drush upwd admin --password="newpassword" - сбросить пароль для пользователя

рівень особистого розвитку

«Люди не змінюються міняються умов, змінюється світ», «умови змінюють людей», «люди пристосовуються до постійно змінного світу» . Напевно кожен з мас не раз чув подібні вислови і з деякими погоджувались з іншими ні, залежно від того що було вигідніше в цій чи іншій ситуації. Але в чому ж істина, чи змінюється людини, чи і через тисячу років ми залишимось тими ким ми є?

Істина в тому, що і як в будь якій науці є винятки і часні випадки так і тут, кожна сформульована істина являються винятком і часним випадком з точки зору іншої, при цьому залишаючись істиною. Тобто, кожна точка зору являється частиною істини яку кожен хоче знати. Люди і змінюються і залишаються тими ж в одно-час, а причиною цього є те, що людина як морозиво ескімо – спершу в основі лежить дерев’яна паличка (не зміна частина, душа, чи те що лежить в основі підсвідомості) далі пломбір в який при бажані можна добавити чи змішати з чимось смачним (наший досвід і світогляд, ставлення до інших і наші думки, загалом це наша підсвідомість), і нарешті глазур на яку при ситуації може причіпитись арахіс, ізюм, кокосова стружка, яка місцями може зламатись чи навіть відпасти (це наша поведінка, наша маска, те що бачать інші). Так от, як не мішали б ми пломбір, як його не збільшували чи зменшували, чим би ми не посипали глазур все рівно це буде морозиво на паличці. Проте якщо дивитись з іншого боку, морозиво з посипаним кокосом на глазур і без кокоса це два різних морозива.

Але суть(паличка) яка залишиться після стресових ситуацій в яких зламається і обсипиться глазур, чи з часом коли пломбіру стане менше, чи навпаки більше основа, сама людина, та дерев’яна паличка залишиться дерев’яною паличкою так як і раніше.

Нещодавно я зустрів старого друга, я його не впізнав і не через те що він зовнішнє змінився, а через те що змінилася його глазур, змінилась його поведінка, жести – перед мною стояла інша людина. Звісно я був радий його побачити і ми добре поспілкувались, проте в кінці коли ми розійшлись моєю першою думкою після закінчення подиву була «Значить я його і не знав». В ньому були нотки поведінки тієї людини що я знав, але раніше я саме цим деталям не придавав великої уваги, як опинилось це і була його суть, чи ехо голосу підсвідомості що пробивались крізь тони глазурі.

На кінець думки хочу сказати про об’єднуючу складову усіх факторів, це саме все наше морозиво з пломбіром, поличкою і покрите глазур’ю – наша свідомість. Тобто коли люди говорять, що їхні знайомі змінились це значить що змінилась їхня поведінка, свідомість, маски які вони носять. Але і коли люди говорять, що люди не змінюються вони говорять про те, що в людях не змінюється їхня суть і основа.

Початок чогось нового

Буває в житті перехідний момент коли вже всі таракани в голові не такі ж і великі і з ними можна змиритись, коли набридає боротись з собою і іншими, коли хай їдуть колесом думки інших які не погоджуються з тобою. І в такі моменти вже стає зрозуміло що ти хоч, що ти від себе приховував. Можна сказати, що це нова стадія особистого просвітлення, коли ти нічого не приховуєш від себе і від інших, а навіщо? Все що ти скривав від себе інші бачать, адже всі ми як відкриті книги хоч не всі і вміють їх читати і не всі розуміють про що він сам.

За минулий 2014 рік, уже все починається банально але, я не написав по факту нічого бо, а яка різниця чого? Суть не втому адже тепер все по іншому. Ми кожного дня нова людина з багажом знань вчорашнього я і вибирати який сьогодні я тільки мені і цей вибір для себе може зробити кожен, але як би ми не вибирали від своєї суті нам не скритись і тому ми все рівно, хоч і нові але ті самі, але новіша версія самих нас.)

cinst chocolatey.org apt-get для Windows

Не так давно открыл для себя прелестную возможность у Windows того что очень не хватало, и одно из того чем очень сильно привлекает linux, это установка приложений из командной строки а так же обновления всех приложений одной командой
Очень клево будте для различных админов или "настройщиков" Windows
можно установить 90% всех необходимых программ(а то и все 100%) просто выполнив в cmd
cinst flashplayerplugin flashplayeractivex notepadplusplus sublimetext2 7zip GoogleChrome javaruntime Firefox flashplayerplugin adobereader ccleaner sysinternals putty filezilla dropbox skype paint.net virtualbox DotNet4.5 Wget ConEmu libreoffice PDFCreator teamviewer wuinstall.run
Все происходит с помощью "тихой установки" не задавая лишних вопросов и что важно не устанавливая лишние программы )
Что бы работала такая установка всего то нужно выполнить в командной строке

@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%systemdrive%\chocolatey\bin

Возможные пакеты можно глянуть на сайте
chocolatey.org

Массовое применение patch drupal 7.32

Для того что применить к всем пользователям патч нужно создать файл на сервере (к примеру в корне) с именем к примеру
pathc.patch. Текст в файле, в нашем случаи можно взять, здесь https://www.drupal.org/files/issues/SA-CORE-2014-005-D7.patch

И зайдя через SSH выполнить команду

for i in /home/www/*/data/www/* ; do cd "$i"; echo "$i"; patch -p1 < /patch.patch; done

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

Анимация css

Пример анимации на CSS очень прикольно! 🙂

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
.uwloader{
	background: url(http://my-opinions.info/wp-content/uploads/2014/09/preloader.png) no-repeat;
	background-size: 80px 80px;
	position: fixed;
	top: 50%;
	left: 50%;
	margin-left: -30px;
	margin-top: -30px;
	width: 80px;
	height: 80px;
	-webkit-animation: rotateplane 2s infinite ease-in-out;
	animation: rotateplane 2s infinite ease-in-out;
}
@-webkit-keyframes rotateplane {
    0% {
    -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg)
	}
	25% {
	    -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg)
	}
	50% {
	    -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg)
	}
	75% {
	    -webkit-transform: perspective(120px) rotateX(0deg) rotateY(-179.9deg)
	} <a href="http://my-opinions.info/en/programing/css/animaciya-css#more-266" class="more-link">Continue reading <span class="screen-reader-text">Анимация css</span></a>

 

Дробное количество ubercart 3

ubercard 3.5 нашел решения с некоторыми коректировками
// making the product quantities FLOAT instead INTEGER Drupal 7, Ubercart 3.1
//// DATABASE CHANGES Four ubercart tables alterations are made from sql terminal (mysql -u ADMIN_USER -p , use DATABASE_NAME )
1) The UC_CART_PRODUCTS table intersect the UC_CARTS table and the UC_PRODUCTS table. The column ц╒Б┌╛е⌠qtyц╒Б┌╛б² is the one to ajust. Here is the MySQL statement that will modify the column to a FLOAT data type:

ALTER TABLE `uc_cart_products` MODIFY COLUMN `qty` FLOAT(6,2) UNSIGNED NOT NULL DEFAULT 0;

2) The UC_ORDERS table holds all the orders created. The column to adjust is ц╒Б┌╛е⌠product_countц╒Б┌╛б².

ALTER TABLE `uc_orders` MODIFY COLUMN `product_count` FLOAT(6,2) UNSIGNED NOT NULL DEFAULT 0; 3) The UC_PRODUCTS table contains a

default_qty field. This value gets inserted into both the product edit page and the product view page (for the customer). I think it would be a good idea to show the customer how many decimal places one may use.

ALTER TABLE `uc_products` MODIFY COLUMN `default_qty` FLOAT(6,2) UNSIGNED NOT NULL DEFAULT 1.00;

4) The UC_ORDER_PRODUCTS table intersects the UC_ORDERS table and the UC_PRODUCTS table. The column to adjust is the ц╒Б┌╛е⌠qtyц╒Б┌╛б² column. Here is the MySQL statement that will modify the column to a FLOAT data type:

ALTER TABLE `uc_order_products` MODIFY COLUMN `qty` FLOAT(6,2) UNSIGNED NOT NULL DEFAULT 0;

//// CODE CHANGES // FIRST uc_order -> uc_order.install //Change array elements in function to: /** * Increase maximum order item quantity. */

function uc_order_update_7003() {
db_change_field('uc_order_products', 'qty', 'qty', array(
'description' => 'The number of the same product ordered.',
'type' => 'float',
'precision' => 6,
'scale' => 1,
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 1.0,
));
}

// SECOND


uc_order
->
uc_order.install

In $schema['uc_order_products'] change:

'qty' => array(
'description' => 'The number of the same product ordered.',
'type' => 'int',
'size' => 'small',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,
),

To:


'qty' => array(
'description' => 'The number of the same product ordered.',
'type' => 'float',
'precision' => 6,
'scale' => 1,
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 1.0,
),

// THIRD uc_product -> uc_product.module //For possibility of using 0.00 to 1.00 quantites in function uc_product_uc_update_cart_item change: (string 1052) p.s. С новыми версиями функция поменялась, я сменил на функцию на старую версию, пока все ок 🙂

</pre>
<pre class="php"><code><span class="php-keyword">function</span> <span class="php-function-or-constant"><a class="local active" title="Implements hook_uc_update_cart_item()." href="http://drupalcontrib.org/api/drupal/contributions%21ubercart%21uc_product%21uc_product.module/function/uc_product_uc_update_cart_item/7">uc_product_uc_update_cart_item</a></span>(<span class="php-variable">$nid</span>, <span class="php-variable">$data</span> = <span class="php-keyword">array</span>(), <span class="php-variable">$qty</span>, <span class="php-variable">$cid</span> = <span class="php-function-or-constant">NULL</span>) {
  <span class="php-keyword">if</span> (!<span class="php-variable">$nid</span>) {
    <span class="php-keyword">return</span> <span class="php-function-or-constant">NULL</span>;
  }
  <span class="php-variable">$cid</span> = !(<span class="php-function-or-constant">is_null</span>(<span class="php-variable">$cid</span>) || <span class="php-keyword">empty</span>(<span class="php-variable">$cid</span>)) ? <span class="php-variable">$cid</span> : <span class="php-function-or-constant"><a class="local" title="Returns the unique cart_id of the user." href="http://drupalcontrib.org/api/drupal/contributions%21ubercart%21uc_cart%21uc_cart.module/function/uc_cart_get_id/7">uc_cart_get_id</a></span>();
  <span class="php-keyword">if</span> (<span class="php-variable">$qty</span> < <span class="php-constant">1</span>) {
    <span class="php-function-or-constant"><a class="local" title="Removes an item from the cart." href="http://drupalcontrib.org/api/drupal/contributions%21ubercart%21uc_cart%21uc_cart.module/function/uc_cart_remove_item/7">uc_cart_remove_item</a></span>(<span class="php-variable">$nid</span>, <span class="php-variable">$cid</span>, <span class="php-variable">$data</span>);
  }
  <span class="php-keyword">else</span> {
    <span class="php-function-or-constant"><a class="local" title="Returns a new UpdateQuery object for the active database." href="http://drupalcontrib.org/api/drupal/drupal%21includes%21database%21database.inc/function/db_update/7">db_update</a></span>(<span class="php-string">'uc_cart_products'</span>)
      -><span class="php-function-or-constant"><a class="local" title="Multiple implementations exist." href="http://drupalcontrib.org/api/search/7/fields">fields</a></span>(<span class="php-keyword">array</span>(
      <span class="php-string">'qty'</span> => <span class="php-variable">$qty</span>, 
      <span class="php-string">'changed'</span> => <span class="php-function-or-constant"><a class="local" title="Time of the current request in seconds elapsed since the Unix Epoch." href="http://drupalcontrib.org/api/drupal/drupal%21includes%21bootstrap.inc/constant/REQUEST_TIME/7">REQUEST_TIME</a></span>,
    ))
      -><span class="php-function-or-constant"><a class="local" title="Multiple implementations exist." href="http://drupalcontrib.org/api/search/7/condition">condition</a></span>(<span class="php-string">'nid'</span>, <span class="php-variable">$nid</span>)
      -><span class="php-function-or-constant"><a class="local" title="Multiple implementations exist." href="http://drupalcontrib.org/api/search/7/condition">condition</a></span>(<span class="php-string">'cart_id'</span>, <span class="php-variable">$cid</span>)
      -><span class="php-function-or-constant"><a class="local" title="Multiple implementations exist." href="http://drupalcontrib.org/api/search/7/condition">condition</a></span>(<span class="php-string">'data'</span>, <span class="php-function-or-constant">serialize</span>(<span class="php-variable">$data</span>))
      -><span class="php-function-or-constant"><a class="local" title="Multiple implementations exist." href="http://drupalcontrib.org/api/search/7/execute">execute</a></span>();
  }
}


 


if ($qty < 1) {

 

CHANGE TO:


if ($qty == 0) {

// FOURTH uc_order -> uc_order.admin.inc //Not sure if it's necessary but just in case (string 1125)

if (!isset($product['remove']) && intval($product['qty']) > 0) {

CHANGE TO:


if (!isset($product['remove']) && ($product['qty']) > 0) {

//FIFTH uc_cart -> uc_cart.install //Not sure if it's necessary but just in case CHANGE TO FLOATS: (string 37)


'qty' => array(
'description' => 'The number of this product in the cart.',
'type' => 'float',
'precision' => 6,
'scale' => 1,
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 1.0,

AND (string 126)


function uc_cart_update_7001() {
db_change_field('uc_cart_products', 'qty', 'qty', array(
'description' => 'The number of this product in the cart.',
'type' => 'float',
'precision' => 6,
'scale' => 1,
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 1.0,
));
}

/*uc_store\uc_store.module*/ /*chenge */


function uc_store_validate_uc_quantity(&$element, &$form_state) {
if (!preg_match('/^\d+$/', $element['#value'])) {
form_error($element, t('The quantity must be a number.'));
}
elseif (empty($element['#allow_zero']) && !$element['#value']) {
form_error($element, t('The quantity cannot be zero.'));
}
}

/*on*/


function uc_store_validate_uc_quantity(&$element, &$form_state) {
if (!preg_match("/([0-9\.-]+)/", $element['#value'])) {
form_error($element, t('The quantity must be a number.'));
}
elseif (empty($element['#allow_zero']) && !$element['#value']) {
form_error($element, t('The quantity cannot be zero.'));
}
}

Drush update all module and drupal automatic more site

Как всегда не буду тянуть заходим в SSH и вводим такую вот строчку

for i in /home/www/grenuy/data/www/*/sites/.. ; do cd "$i"; drush updb; drush en update; yes | drush pm-update ; drush up drupal ; drush updb ; done

 

grenuy это имя пользователя путь может быть немного видоизмененным в зависимости от сервера.

Скрипт может давать сбои и error, при сбои создается папка с именем drupal-7.** перенеся от туда файлы в корень сайта восстановиться сайт.

обновляет как и 7-ку так и 6-ку в построчечный режим выполнения команд такой(в корне сайта выполняться)

drush en update
drush pm-update
drush up drupal
drush updb

Denwer бекап Mysql

Что бы востановить БД Запускаем командную строку (cmd)
и пишем команду
cd <путь к мускулу>
mysql -uroot test<D:\test\easydump.sql

Что бы создать бекап нужно написать команду
mysqldump -uroot test>D:\test\easydump.sql

mysqldump -u -p | gzip > /path/to/backup/db/datename_`date +%y_%m_%d`.gz

Для бекапа всех баз вот так
mysqldump -u user -p --all-databases >file.sql

востановить отдельную БД
mysql -u sadmin -p pass21 Customers < custback.sql
Если нет файла mysqldump то можно скачать здесьmysqldump

В чому сенс життя?

Протягом всієї історії існування людства завжди, існували філософи які намагались найти відповіді на вічні запитання і тратили на цей пошук все своє життя. Ці запитання залишились і є актуальними до сьогодення. Багато людей роздумує на ті самі теми, що і давні філософи, а саме: що ж таке життя і який його сенс, чи існує Бог і життя після смерті, яка роль людей в існуванні не лише землі, а й всього світу та багато інших… І я хотів би розглянути деякі з них.

Одного разу я задумався над тим: а яка моя роль в цьому трагікомічному театрі під назвою «життя»?» і «чому я з’явився на цьому світі саме в цей час саме в цьому місті?». Ці питання в мене виникали через те, що я не міг знайти свого місця на цьому світі і не розумів свого призначення. Але оцінивши все, що мене оточувало, що траплялось, що я знав і, що мав дізнатись я дійшов до висновку:

Кожна людина має певне місце в історії, кожен з нас після себе залишає піщинку на цілому березі історії і в меншій чи більшій, мірі саме ця піщинка віддасть хвильовий ефект який вплине на майбутнє. Коли деякі люди стають відомими, то інші люди допомагають піднятись тій жемчужні з дна затоки, адже без них не було б і тих відомих… Є безліч людей, яким я можу допомогти і на яких я можу вплинути в більшій чи меншій мірі, і вони вплинуть на мене. В кожного з нас є своя воістину унікальна і дивовижна доля, яка містить в собі добрі і погані миттєвості життя і наповнена багатьма випробуваннями подолавши які, ми зможемо найти щось неймовірне і особливе саме для себе, і найголовніше те, що ми не повинні знати те, що приготувала нам доля бо просто стане не цікаво…

А якщо повернутись до запитання «в чому сенс життя?» і хоча я лише починаю жити на цьому світі і будучи невиправним оптимістом можу сказати, що для мене це подолати самого себе і «стрибнути вище своєї голови», подолати всі перешкоди залишаючись тим ким я хочу бути і тим ким я є, і щоб не трапилось, залишатись самим собою… Кожний з нас бачить життя по особливому, і це приводить до того, що мету і сенс свого життя кожна людина розцінює і створює сама.

Alis .htaccess правельный редирект

Все просто, и сразу к делу

 

 

RewriteEngine On
 
RewriteCond %{HTTP_HOST} ^a\.com$ [NC]
RewriteRule ^(.*)$ http://www.a.com/$1 [L,R=301]
 
RewriteCond %{HTTP_HOST} ^b\.com$ [NC]
RewriteRule ^(.*)$ http://www.b.com/$1 [L,R=301]

drupal 6 node_import ANSI to utf

Столкнулся с проблемой, нужно было научить node_import на drupal 6 кушать файлы в кодировки ANSI убив несколько часов, решил проблему радикально, в момент загрузки файла определяю если строки в не в UTF-8 то перегнать его в эту кодировку.

Для этого нужно сделать следующее,в файле node_import.admin.inc найти функцию

function node_import_add_form_submit_upload_file($form, &amp;$form_state) {

Заменить ее на следующую функцию

function node_import_add_form_submit_upload_file($form, &amp;$form_state) {
  $validators = array();
 
  $dest = node_import_directory();
 
  if (($file = file_save_upload('file_upload', $validators, $dest, FILE_EXISTS_RENAME))) {
    drupal_set_message(t('New file %name uploaded to %path.', array('%name' =&gt; $file-&gt;filename, '%path' =&gt; $file-&gt;filepath)));
    file_set_status($file, FILE_STATUS_PERMANENT);
    $form_state['values']['fid'] = $file-&gt;fid;
  }
 
/*Перекодировка файла если он в cp1251*/
	$fp = fopen($file-&gt;filepath, 'r');
	$file1 = '';
	while (! feof($fp)) {
	  $file1 .= fgets($fp, 4096);
	}
	$get  = mb_detect_encoding($file1, array('utf-8', 'cp1251'));
	if($get != "UTF-8") {
		$file_utf = iconv("cp1251","UTF-8", $file1);
		$tmp_file = fopen($file-&gt;filepath, 'w+');
		fwrite($tmp_file, $file_utf);
		fclose($tmp_file);
		$fp = fopen($file-&gt;filepath, 'r');	
	}
/*\Перекодировка файла если он в cp1251\*/
 
  node_import_add_form_submit_reload($form, $form_state);
}

Рад если кому то помог, рекомендуйте друзьям 😉

shell команда find

find — shell команда для поиска файлов и каталогов в иерархии каталогов.  Рассмотрим некоторые способы использования этой команды и несколько ее опций поиска.

Самый простой пример нахождения файла по имени с помощью команды find:

find . -name test

после написания find пишем путь к папке, где надо искать, мы указали точку, то есть искать в текущем каталоге. Дальше ключ -name используется для поиска по имени, после его следует имя папки или файла, который мы ищем.В данном примере мы указали команде искать файл по названию test в текущем каталоге (. — точка это обозначение текущего каталога)

find . -iname test

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

Но, дело в том, что в примере выше мы не указали, что ищем именно файл, по тому, если в текущем каталоге или его подкаталоге существует папка из названием test, то она тоже попадет в результаты поиска. Для указания того, что мы ищем именно файл, и что названия папок в результаты поиска включать не надо, используем ключ «-type»

find . -type f -name test

«-type f» — мы указали, что ищем именно файл (f)
Для того, чтобы в результат включить одни папки с названием test, а файлы не искать, используем
«-type d»

find . -type d -name test

А что, если нам надо найти все файлы с расширением «.db», тогда используем звездочку «*».
* — заменяет любой набор символов. И того, для поиска всех файлов с расширением «.db» в каталоге /var/named используем следующую команду:

find /var/named -type f -name *.db

Тут мы заменили каталог для поиска на /var/named.

Если надо найти файлы или папки по дате их создания или последнего доступа к ним, используем ключ «-atime» — поиск по дате последнего доступа к файлу (или же его созданию, если никто к нему еще не доступался).

find . -type f -atime 1

Мы указали что ищем все фалы в текущем каталоге, которые были созданы или же к ним последний раз доступались за прошлые сутки, то есть больше чем 24 часа и меньше чем 48 часов назад. «-atime n» — считается n*24, то есть в нашем случае 1*24=24 часа назад, и команда ищет именно сколько 24-часовых периодов назад доступались к файлу.

А вот следующая команда найдет все файлы, к которым доступались больше чем 24 назад:

find . -type f -atime +1

Дальше можем найти все папки, к которым доступались больше чем 48 часов назад:

find . -type d -atime +2

Все файлы, к которым доступались за последние сутки:

find . -type f -atime -1

По этому же принципу можем использовать ключи
«-ctime n» — по дате создания или изменения статуса файла или папки
«-mtime n» — поиск файлов, которые были изменены(редактированы, или созданы) n*24 часов назад
«-amin n» — файлы или папки, к которым доступались n минут назад
«-cmin n» — файлы или папки, статус которых был изменен(или были они созданы) n минут назад
«-mmin» — файлы или папки, которые были изменены(или созданы) n минут назад

Можно производить поиск файлов и каталогов по их владельцу(юзеру), используя ключ «-user»:

find . -name *.jpg -user nobody

Мы указали что ищем в текущем каталоге все файлы с расширением .jpg, у которых стоит владелец nobody

Рассмотрим ситуацию, когда нам надо над результатом поиска выполнить какую-либо команду, например удалить все найденные файлы. В таком случае используем ключ «-exec». Он используется для указания другой команды, которую надо выполнить над каждым аргументом результат поиска:

find /tmp -type f -name sess* -exec rm -f {} \;

«/tmp» — указываем что ищем файлы в папке /tmp
«-type f» — ищем только файлы и каталоги в результат поиска не включать
«-name sess*» — все файлы, имя которых начинается из слова «sess»
«-exec rm -f {}» — запустить команду «rm -f»(удаление) для каждого файла
«{}» — заменяет список найденных аргументов
«\;» — конец команды (в данном случае использования «find» указывать обязательно)

Следующий пример показывает как поменять права на все файлы в папке:

find /home/nobody/public_html -type f -exec chmod 644 {} \;

и на все папки:

find /home/nobody/public_html -type d -exec chmod 755 {} \;

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

chmod 750 public_html

Пример того, как можно с помощью команды «find» найти все файлы .htaccess в аккаунте и закоментировать пхп переменные в нем:

find /home/nobody/public_html -type f -name .htaccess -exec replace "php_admin_flag" "#php_admin_flag" -- {} \;
find /home/nobody/public_html -type f -name .htaccess -exec replace "php_flag" "#php_flag" -- {} \;
find /home/nobody/public_html -type f -name .htaccess -exec replace "php_admin_value" "#php_admin_value" -- {} \;
find /home/nobody/public_html -type f -name .htaccess -exec replace "php_value" "#php_value" -- {} \;

Архивация-разархивация через SSH

Как запаковать файлы в tar.gz через SSH
tar -zcvf имя_архива архивируемая_папка
например
tar -zcvf folder.tar.gz folder/
пояснения
- c – значит, что создается новый архив;
- f – посредством этого флага задается имя создаваемого архива;
- z – архивация будет происходить посредством архиватора gzip;
- v – в консоль будет выводиться информация о процессе архивации.

Как запаковать файлы в zip через SSH
zip -r имя_архива архивируемая_папка
например
zip -r logs.zip logs/
пояснения
r означает, что нужно искать файлы в папке рекурсивно, иначе в архиве бы оказалась одна пустая папка.

Как распаковать файлы из tar.gz через SSH
tar -xzvf имя_архива.tar.gz
например
tar -xzvf archive.tar.gz

Как распаковать файлы из zip через SSH
unzip имя_архива.zip
например
unzip archive.zip

Да, еще вот что… Консоль в UNIX имеет некоторые хитрости, которые могут значительно облегчить работу - например автозаполнение имени файла. Согласитесь, было бы глупо для распаковки, к примеру джумлы набирать имя файла Joomla_1.5.22-Stable-Full_Package-Russian.tar.gz вручную?
Этого и не требуется - достаточно набрать первые 2-3 символа и нажать кнопку “tab”
Например, в данном случае набираем
tar -xzvf Jo
жмем “tab” а затем “enter”

Що означає стати дорослим?

Що означає стати дорослим?
Багато кому не один раз говорили, що йому пора вирости, або стать дорослим, але ніхто навіть не задумувався, що це означає чи, що це може змінити...
Я пам'ятаю як ще рік назад я спокійно перебуваючи в своїй кімнаті міг мріяти: я міг відчути невагомість, а через мить летіти з парашутом на спині і дивитись як віддаляється від мене небо, чи взагалі сидіти на вершині гори біля квітучої вишні у берега невеликого чистого озера - або просто міг блукати вулицями міста будучи на своїй хвилі і не думати про те, що мене чекає завтра і про те, що мене оточує. Але ось пройшов деякий час і в якусь мить я перестав літати, перестав мріяти, тепер я почав переживати про насущні речі і події, думати про те яка буде реакція людей якщо я зроблю те, що я хочу і те, що може зробити мене щасливим, думати про те, як мені потрібно прореагувати на дії інших людей, чи просто, що сказати хоча скоріше як сказати те, що я хочу. Якщо коротко, я перестав мріяти і замінив це думками про все, що тільки можна уявити....
Одного разу я почув таку фразу "У мене така проблема. Я постійно думаю" і якщо робити висновки то чим старші ми стаємо, тим менше ми мріємо і тим більше думаємо. Я звісно не кажу, що ми взагалі перестаємо мріяти, чи що взагалі не думали я говорю, що баланс між цими двома важливими діями зміщуються, і це правильно, але в більшості людей він зміщуються на стільки, що навіть той мінімум мрій, який повинен бути в усіх, у них прямує до нуля, а це не правильно.

Спонтанні рішення і їх важливість..

Кожен з нас хоч рас в житті робив щось спонтанно. З цими діями пов'язані найбожевільніші вчинки нашого життя і яскраві спогади, які залишаються з нами на довгі роки.

На мою думку: Спонтанні дії - це дії які людина робить коли відкидає всі за і проти, всі страхи і переживання, всі думки, всі зовнішні і внутрішні фактори, і просто робить те, що прийде їй в голову, те, що захоче. Якби люди не робили нічого спонтанного, наше життя стало б сірим і одноманітним, адже саме про спонтанні рішення говорять в компаніях, посміхаються коли згадують про ці події. Але в кожному житті з'являються різні страхи і переживання, інколи навіть такі думки як: "а що буде якщо я це зроблю?", "а який в цьому сенс?", "а навіщо це мені?" І з часом кількість спонтанних рішень зменшуються. Наприклад, візьми і згадай коли ти робив щось спонтанне востаннє... А коли ти хотів щось зроби, і навіть майже зробив це, але тебе зупиняв якийсь страх, думка, чи зовнішній фактор?..

Але звідки беруться ці страхи? Кожен знає, що кожна дія має свої наслідки. І в випадку коли ці наслідки негативні людський мозок приймає рішення, що спонтанні рішення такого плану шкідливі для тебе... Отже, ці страхи будуються на колишньому досвіді, а інколи з історій про досвід інших в схожій ситуації...

Тепер вертаючись до теми, давай згадаємо найнеймовірніші твої вчинки.. Які з них були наслідком спонтанності, або наслідком спору "а слабо?". Я впевнений, що з кожною ситуацією ти пов'язана якась історія яку ти міг би довго розповідати. Повір, в кожної людини є такі історії.

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

песиміст / оптиміст MAKE YOUR CHOICE…

песиміст / оптиміст MAKE YOUR CHOICE...

Задатки характеру чи власний вибір бути песимістом чи оптимістом..)

Закономірність, Факт, Абсурд - називай як хочеш, але думки матеріалізуються, відчуття притягують ситуації в яких ти себе будеш відчувати так-само. То чи не краще бути оптимістом і радіти життю, ніж бути песимістом?

Науковці вияснили, що оптимісти і песимісти під час розумової активності і повсякденного життя використовують різні частини головного мозку. В оптимістів більше активні ділянки мозку які відповідають за уяву та мрії, а в песимістів - за спогади. Коли оптимісти думають про майбутнє, песимісти зациклюються на минулому, на своїх помилках. Отже песимізм і оптимізм мають фізіологічну основу і бути оптимістом чи песимістом це вибір кожного з нас...

В мене є знайомий який за пів року зміг з реаліста стати спершу песимістом, а потім оптимістом. І це було не прості перепади настрою, він реально змінив свою стилістику мислення ... Звісно зрозуміло, що цьому сприяли ситуації в які він попадав за ті самі пів року. Але причина того, що він змінився не в ситуаціях в які він потрапляв, не в людях, що його оточували причина в тому, що йому було потрібно змінитись, в тому, що він хотів змінитись. І тому я вважаю, що кожна людина може стати песимістом, оптимістом чи реалістом відносно того, що їй потрібно в даній ситуації, або по власному бажанні, і це зробити під силу кожному. І вертаючись до того, що відчуття і думки матеріалізуються можна стверджувати, що кожен може зробити своє життя кращим і перший крок ... я думаю ти і без мене знаєш який для тебе перший крок...

Вложеный запрос в codeignator

Как всегда мало водного текста, сразу код, ниже немного разъяснения по нему

1
2
3
4
5
6
7
8
9
10
11
    $this->db->select("*")
            ->from("schedule")
            ->order_by("schedule.dayofweek", "asc")
            ->order_by("schedule.lesson_number", "asc")
            ->order_by("date_approve", "desc");
    $s = $this->db->_compile_select();
    $this->db->_reset_select();
    $dbprefix = $this->db->dbprefix;
    $this->db->set_dbprefix('');
    $this->db->select("*")
            ->from('(' . $s . ') as ' . $this->db->dbprefix . 'schedule_tmp'); <a href="http://my-opinions.info/codeigniter/vlozhenyj-zapros-v-codeignator#more-171" class="more-link">Читать далее <span class="screen-reader-text">Вложеный запрос в codeignator</span></a>

В результате получим вот такой вот запрос

1
2
3
4
5
6
7
8
9
      SELECT * FROM (
      SELECT * FROM `uw_schedule` ORDER BY  `uw_schedule`.`dayofweek` ASC, `uw_schedule`.`lesson_number` ASC, `uw_schedule`.`date_approve` DESC
      ) AS uw_schedule_tmp
 
      LEFT JOIN `uw_lessons` ON `uw_lessons`.`lesson_id` = `uw_schedule_tmp`.`lesson_id`
      LEFT JOIN `uw_students` ON `uw_schedule_tmp`.`class_id` = `uw_students`.`class_id`
      WHERE `uw_schedule_tmp`.`class_id` = 0
      AND `uw_schedule_tmp`.`date_approve` < '2012-06-29 14:59:00'
      GROUP BY uw_schedule_tmp.dayofweek, uw_schedule_tmp.lesson_number

Скорее всего вы столкнетесь с проблемой что методы
_compile_select();
_reset_select();
protected, а соответственно их можно использовать только в нутри класса, честно говоря не разберался как обойти эту ситуацию и просто поменял их в ядре на public, если кто разберется, напишите пожалуйста, исправлю статью, и себе на заметку.. )

И так теперь по коду,
$this->db->dbprefix Получает текущий префикс, если Вам он не нужен то можно пропустить использования этого метода
_compile_select() Возращает запрос в переменую
_reset_select();

Каким я был сегодня #1

У меня была задача быть сегодня сопереживающим и активным.
Для начала сегодня был день Бади, и естественно думал как угодить бади, и это получилось, вот теперь буду везти ей агруз, алычу, вишню, с собственного сада.
Далее с командой, еще помог с дизайнером, но понял, что инициатива наказуемая, начали вылазить с «мелкими просьбами» на голову, хватило сил и мужества начать говорить что НЕТ, что бы не подводить тех людей на которое было распланированное время, после разговора с бади, поехал ставить коронку, где получил предложения поехать в кино от товарища, предложения принял. После поехал к дизайнеру, она вчера жалувалась о своему несчастью, она попросила меня подвезти, ее на лошадях покататься в понедельник, а за одно и самому прокататься с своей девушкой, на что она конечно же получила положительный ответ.
После поехал к девушки, забрал ее, ухаживал за ней, выполнял всяческие желания и т.д. Короче объявил, ДЕНЬ ТВОИХ желаний. И все послушно выполнял… Это было забавно и весело…
После было кино, по дороге зацепили тему работы, потом сосики и дом…
Сейчас перед сном попытаюсь сложить принтер надеюсь получиться… и не будет лишних запчастей. Вот так я день провел…
Кстати девушка сказала, что был заботливый и нежный. Так что миссия более менее выполненная

ЛП программа в агенстве «Развитее»

Вот совсем не давно меня вовлекли в агенство "Развитие" на прохождения курсов. Сначала в первую ступень, далее решил пойти в ЛП.
Подобного уровня курсов я не знаю, первая ступень еще так себе, круто конечно но все же как то не столько сколько ожидал, было несколько упражнений, которые позволили покопаться в прошлом, войти в себя, но много как то не дало.
И все же я решил пойти дальше, в лидерскую, ЛПрограмму.
Лидерская делиться на уикенды, вот прошел первый уикенд, что же могу сказать, это просто ППЦ!!!! Получил в 5 раз больше чем ожидал, услышал и принял то о себе, что не мог принять уже долгие годы, и считал что это не про меня, хотя говорили часто. Очень негатива много ушло. Научился, смотреть на жизнь по другому, начал появляться опыт НАСТОЯЩЕЙ, командной игры, один из интересных моментов, в первый день каждый выбирает себе "БАДИ", это человек, который найбольше тебя бесит, и с которым в жизни ты просто бы не общался, но с помощью тренинга, учишься и с такими работать...
На мир начинаешь смотреть совсем по другому, как то "по-настоящему" что-ли, с помощью тренировок, вспоминаешь как это ПОНАСТОЯЩЕМУ чувствовать радоваться, более того учать переключаться, и делать выводы.
Но даже после окончание первого уикенда не дают спуску, назначают капитана и начинают контролировать что бы ты выполнял СОБСТВЕННЫЕ обещания. И реально начинаешь работать, и стараться более эффективно и делать больше….
Вот их сайт http://razvitie.od.ua/.

XML -> PHP

Это больше не пост а так приметка для себя, что бы не забыл

simplexml_load_file("file.xml");
simplexml_load_string($xml_string);

На выходе получаем объект с расфасованным xml. Вот так супер просто и супер удобно.
Единственное что нужно наверное отметить, что этот метод требует php5 и насколько я понял какой-то модуль, ну у меня пошло без шаманства. Если что не так то путь в файл php.ini
Для примера можно написать вот такой нехитрый файл

$xml="<request>      
<version>1.2</version>
<result_url>http://ulove.ua//buy/</result_url>
<server_url>http://ulove.ua//buy/resultliqpay/</server_url>
<merchant_id>i4927007979</merchant_id>
<order_id>128</order_id>
<amount>12</amount>
<currency>USD</currency>
<description>uLove</description>
<default_phone>+380938729936</default_phone>
<pay_way>card</pay_way> 
</request>";
$xml=simplexml_load_string($xml);
print_r($xml);
echo $xml->order_id;

На экран получим

SimpleXMLElement Object
(
    [version] => 1.2
    [result_url] => http://ulove.ua//buy/
    [server_url] => http://ulove.ua//buy/resultliqpay/
    [merchant_id] => i4927007979
    [order_id] => 128
    [amount] => 12
    [currency] => USD
    [description] => uLove
    [default_phone] => +380938729936
    [pay_way] => card
)
128

Мое мнение, это самый простой вариант, кто предложит проще выслушаю.

Алкоголизм часть 2

С началом этой статьи Вы можете ознакомиться, перейдя по ссылке
В этой части хотел бы поговорить, почему же, все таки, так пропагандируется алкоголь, да и другие деградирующие средства в Украине.
На самом деле очень все банально, прозаично и прозрачно.
Наведу простой пример, как думаете, кого легче убедить что, к примеру, земля имеет форму квадрата, или же что голубой цвет на небе, на самом деле в виде желе… или прочей херни, которая вообще никак не клеится с реальностью? Ответ очевиден… Читать далее Алкоголизм часть 2

Лучше просыпаться чем спать

Как же хочется поспать утром, как НЕ хочется вставать. Но если проснулся, нужно учится уже вставать, кроме, наверное, тех случаев, если проснулся, от шума/плохого сна, ведь то время которое досыпаешь все равно не прибавит сил, а просто заберет время...
Работа фриланса, как правило, позволяет спать сколько хочешь, и ложиться во сколько захочешь. Только не подумайте что мы (фрилансеры) только и делаем что спим, на самом деле фрилансом быть зачастую гораздо тяжелее чем работать в офисе. И часто МЕНЕЕ прибыльно, но фриластво имеет свои плюсы, а именно:
1. Развиваешься по выбранном направлении
2. Здоровый сон(как правило)
3. Сравнительно большой заработок, если живешь в маленьком городе
Есть еще много, но думаю, я не первый кто перечисляет плюсы и минусы, кстати, о минусах:
1. Сравнительно маленькая зарплата, если живешь в БОЛЬШОМ городе
2. Необходимый огромный самоконтроль\ целеустремленность\желание что бы работать
3. Тяжело развиться в карьере
4. Отсутствие соц.пакета, оплачиваемого отпуска
Но что то я в сторону ушел, говорили то мы не о +ах и -ах фриланства. А о том что просыпаться нужно сразу же после того как проснулся и не досыпать те часы... Так как сил они не придадут. Может я не прав, и научных подтверждений я не искал, но все же МОЕ мнение таково.
Жду коментов и ВАШЕГО мнение!

Начал изучать CodeIgniter

Начал изучать CodeIgniter, очень кульный ферймворк, по заявлениям автором самый быстрый фреймворк из существующих.
Так что ждите новых статей по CodeIgniter.
То что хорошо, это очень хорошая документация, и стартовать достаточно просто...
Кстати русские доки по CodeIgniter версии 2.0.0 можно найти вот здесь http://whitepiano.ru/user_guide/ так что всем счастливо вникать в этот прекрасный фреймворк

Drupal BuEditor разметка php css html c++ и т.д.

Все очень просто заходим в раздел настройки bueditor-a
http://*****/admin/settings/bueditor
Возле желаймого редактора тыкаем изменить, получаем следующее

Вставив код в ячейку кода

[PHP]js: E.tagChooser([
<%%KEEPWHITESPACE%%> ['code', 'Bash', {'class': 'bash'}],
<%%KEEPWHITESPACE%%> ['code', 'C', {'class': 'c'}],
<%%KEEPWHITESPACE%%> ['code', 'C++', {'class': 'cpp'}],
<%%KEEPWHITESPACE%%> ['code', 'C#', {'class': 'csharp'}],
<%%KEEPWHITESPACE%%> ['code', 'Pascal', {'class': 'pascal'}],
<%%KEEPWHITESPACE%%> ['code', 'Php', {'class': 'php'}],
<%%KEEPWHITESPACE%%> ['code', 'Css', {'class': 'css'}],
<%%KEEPWHITESPACE%%> ['code', 'html', {'class': 'html4strict'}],
<%%KEEPWHITESPACE%%> ['code', 'Brainfuck', {'class': 'bf'}],
<%%KEEPWHITESPACE%%> ]);[/PHP]

Нажали сохранить мы получим обновленный редактор

 

views nivo slider Как сделать что бы слайды показывались в рандомному порядку, и первый слайд так же был рандомным

Может кому пригодиться, сделал немного извращено, но работает, отсортировал, и в конце шаблона дописал

if(drupal_is_front_page()){
$sql = "SELECT nid FROM node WHERE TYPE =  'image_slider'";
$result = db_query($sql); 
while ($n = db_fetch_object($result)) {
db_query("UPDATE  `node` SET  `title` =  '".rand(1,100500)."' WHERE `nid` ='".$n->nid."';");
}}

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

Переменные в теме Drupal

page.tpl.php

Modelo básico para a página.
variáveis ​​disponíveis:

$ Head_title - título da página
$ Head - toda a informação na cabeça
$ Styles - Estilos
$ Scripts - scripts
Classes $ - aulas para o corpo
$ Header - cabeçalho, que fizemos em um modelo distinto
$ Region_name - variáveis ​​com nomes de regiões
$ Mensagens - mensagens do sistema
$ Tabs - guias
Conteúdo $ - conteúdo
$ Feed_icons - ícone RSS
$ Footer - o porão, o que temos aprendido em um modelo distinto
$ Base_path - o site caminho de base
$ Is_front - página ou não
$ Logged_in - se um usuário está logado
$ Is_admin - administrador ou não
$ Language - um objeto que contém dados sobre a linguagem corrente
$ Nó - o nó
$ Front_page - link para home
$ Logo - logo
$ Site_name - nome do site
Site_slogan $ - Slogan do site
$ Missão - o site da missão
$ Search_box - busca de bloco
$ Encerramento - a variável é inserido antes da tag de fechamento / corpo, fazendo alguns módulos escrever scripts. Obrigado juliv habrayuzeru
Читать далее Переменные в теме Drupal

Алкоголизм часть 1

Я в шоке насколько сейчас спаивают народ в Украине и России.
Наглым образом пропагандируют "норму" употребления, и при этом еще пускают пыль в глаза, мол борятся против этого всего!
Помиму того уже в народе бытует мнения о том что 1 стакан вина в день, это полезно, да что там народ, половину если не больше, бабок скажет! Да это так!!! БРЕД ЭТО ВСЕ! Читать далее Алкоголизм часть 1

Пересобрать $content $vars[‘content’] Drupal

Вот понадобилось пересобрать переменую $content в таксомании,
ссылка таксомании была такая
taxonomy/term/1
на выходе должен был получить вот такой html одной записи

<div class="news-item">
				  <div class="date"><i>04</i>апр</div>
				  <div class="news-block">
					<p class="title"><a href="node/7">программирования с помощью метода эллипсоидов. С самого начала большое внимание будет уделяться связи линейного программирования с теорией целочисленного программирования, комбинаторикой и оптимизацией.
				</p>
					<p class="more"><a "="" href="node/7">Читать далее</a></p>
				  <div class="line"></div>
				</div>
				</div>

Читать далее Пересобрать $content $vars[‘content’] Drupal

Изменения вывода блока Drupal 6

Необходимо создать в папке шаблоне файл block.tpl.php
В нем создаем что то приблизительно такого

<?php // $Id: block.tpl.php,v 1.2 2011/04/14 08:39:36 goba Exp $ ?>
<div>
<h2><?php print $block->subject ?></h2>
 <?php print $block->content ?>
</div> 

А ниже вот подробно переменные которые можно юзать Читать далее Изменения вывода блока Drupal 6

Главная страница в Drupal (home page of drupal)

Для того что бы сделать главную страницу уникальной можно создать файл в шаблоне с именем page-front.tpl.php, если же вы создаете шаблон и вам необходимо просто определить, главная это страница или нет, можно использовать функцию drupal_is_front_page.
Если текущая страница главная — TRUE, иначе — FALSE.
Так что можно написать

<?php
if(drupal_is_front_page())
echo "Это главная страница";
else "Не главная страница";
?>

Настройка PhpMyAdmin для локал хоста

Вот как то долго не настраивал PhpMyAdmin, а потом взял и настроил! ) создаем в корне папки PhpMyAdmin файл config.inc.php и вставляем туда вот такое Читать далее Настройка PhpMyAdmin для локал хоста

Оглавления модуля

Стилизация и оглавления модуля осуществляеться очень просто, создается в каталоге шаблона каталог html, а там файл modules.php,

1
2
3
4
5
6
7
8
9
10
11
12
<?php
defined('_JEXEC') or die;
 
function modChrome_block1($module, &$params, &$attribs)
{
	if (!empty ($module->content)) : ?>
		<?php if ($module->showtitle) : ?>
			<h1 class="cours"><?php echo $module->title; ?></h1>
		<?php endif; ?>
        <div class="block_H"><?php echo $module->content; ?></div>
	<?php endif; ?>
}

Обратите внимания на блок modChrome_block1
вот первая часть стандартная modChrome_, а вот то что вы напишете далее это ваш индификатор стилизации модуля и когда в шаблоне вызываете модуль необходимо написать вот так

name="modul_block" названия позиции модуля, в style="" пишется ота вторая часть с функции.... вотсь это и все пишите что еще хотели бы узнать... и помогу Вам! )

query_posts подробно про параметры

category_name=Staff Home - функция выведет посты из рубрики Staff Home
category__and - query_posts(array(’category__and’ => array(id_1,id_2,…,id_n)));, выведет посты в если будет принадлежать всем рубрикам
category__in, category__not_in - входит или не входит в рубрики

author=id - возвращает посты, автор которых имеет указанный id.
author=-id - возвращает посты, кроме тех, чей автор имеет указанный id.
author=admin - возвращает посты, авторства admin.

p=id - возвращает пост с соответствующим айди.
name=about-my-life – возвращает пост со приведенным slug «about-my-life»
posts_per_page=N – определяет сколько постов должно отображаться на странице, где N – необхомое кол-во.
posts_per_page=-1 – на странице отображаются все посты
showposts=N – показать N постов
showposts=-1 – показать вес посты
post_status=publish – возвращает опубликованные посты.

 

Akismet и API-ключ

Поставил WordPress автоматом поставился и плагин Akismet - долго не думая что это такое, я его по простому отключил, но вот начал настраивать свой блог и решил разобраться, оказываеться полезная фича, Читать далее Akismet и API-ключ

Функции WordPress

Здесь буду писать функции WordPress, без параметров без прочей фигни... такой себе краткий справочкник, что бы быстро найти то что нужно... А параметры уже можно нагуглить...

the_post_thumbnail - Вывод миниатюрки

Используются в шаблоне для определения какой контент выводить, возвращаютTRUE или FALSE.

  • is_home() - главная страница.
  • is_front_page() - пост или запись главной страницы.
  • is_admin() - панель администрации.
  • is_single() - одиночная запись.
  • is_single('5') - одиночная запись с ИД = 5.
  • is_single('Title') - одиночная запись с заголовком 'Title'.
  • is_single(array('beef-stew', 'pea-soup', 'chili')) илиis_single(array(17, 19, 1, 11)) или is_single(array(17,'beef-stew','Irish Stew')) - если страница попадает в перечисленные ИД или заголовки.
  • is_sticky() - если страница прикреплена.
  • is_sticky('17') - закрепленная страница с ИД = 17.
  • is_page() - страница.
  • is_page('42') - страница с ИД = 42.
  • is_page(array(42, 'about-me')) страница с ИД = 42 или страница с заголовком 'about-me'.
  • comments_open() - форма комментариев разрешена.
  • is_comments_popup() - окно для ввода комментариев.
  • is_category() - категории.
  • is_category(array(9,'blue-cheese','Stinky Cheeses')) - конкретные теги по ИД или названию.
  • is_tag() - теги.
  • is_tag(array('sharp','mild','extreme')) - конкретные значения тегов.
  • is_author() - если на странице автор.
  • is_author('4') - автор с ИД = 4.
  • query_posts () - заслуживает отдельную страничку!

Описания миниатюры(Description thumbnail)

Просидел несколько часов в гугле, обрыл файлы, быстро решения не нашел.
Но для начала подробней о задаче:
Появилась необходимость возле картинки миниатюры поста вывести описания этой же картинки, можно было бы пойти путем регулярного выражения и вырезать alt получив миниатюру в строчку get_the_post_thumbnail. Но я решил все же найти как получить описания картинки именно через функции WordPress.
Читать далее Описания миниатюры(Description thumbnail)

Вывод посты определенных категорий

Понадобилась задачка в шаблоне вывести последнию новость определеной категории на главной. Ну что же создал в шаблоне файл home.php.

И в нужному месте прописал

1
2
3
4
5
6
<?php
query_posts($query_string.'&amp;cat=26');//Делаем запрос в базу который выберет нужные нам посты
have_posts();//выбрать посты
the_post();//выбрать первый пост
the_excerpt();//вывод краткой новости
?>

Бесплатно SMS, MMS, Vkontakte, FaceBook с Life :)

Только что обнаружил для себя приятную новость, оператор Life :), дает возможность отправлять всем своим абонентам, по 3 смс и ммс в день абсолютно бесплатно!!!! )

Для этого нужно зайти на сайт https://www.life.com.ua/sms/ слева авторизироваться, там есть поле супер пароль, его можно получить очень просто. Отправить смс с своего номера на номер 124 с текстом PAROL (на латинице конечно же). За смс плата не взымаеться, даже по стандартным тарифам, тоисть тоже абсолютно бесплатная! В ответ придет так званый супер пароль.

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

Для доступа в Vkontakt и FaceBook бесплатно, нужно активировать послугу social, для это нужно сделать следующее:

Зайти на сайт и активировать ИЛИ

Надішліть “S” на 123, збережіть отримані налаштування, та використовуйте точку доступу life:) social для перегляду полегшених сторінок ИЛИ

Зателефонуйте *123*77#, збережіть отримані налаштування, та використовуйте точку доступу life:) social для перегляду полегшених сторінок ИЛИ

Подзвоніть *123#, виберіть розділ Spilkuvannia, Sotsialni merezhi, потім Vilnyi dustup і Aktyvuvaty, збережіть отримані налаштування, та використовуйте точку доступу life:) social для перегляду полегшених сторінок

А потом вы имеете бесплатный доступ к следующим ресурсам

0.vkontakte.ru або 0.vk.com (это и есть Vkontakte.ru только бесплатный)
zero.facebook.com або 0.facebook.com або завантажити програму для мобільного Facebook
Відео-портал life:) — wap.tochka.life.com.ua