Friday, October 6, 2017

some notes to work with git

git checkout -- file
відміняє зміни зроблені в файлі, стягує попередній контент файла, до редагування
замість git stash  - затягує тільки цей файл який вказаний (якщо є конфлікти)


git cherry-pick <id_of_commit>
для того щоб не мержити вєтки я просто скопіювати коміти з одної вєтки в другу.

переключаємось на вєтку в яку потрібно перенести коміти
достаємо список айдішніків в хронологічному порядку
в консолі git cherry-pick <id_of_commit>
потім гіт пуш

мержим в консолі.
переключаємось на гілку в яку потрібно змердити
$ git checkout master
і мержимо потрібну гілку
$ git merge hotfix

Конфлікти.
<<<<<<< HEAD:index.html
<div id="footer">contact : email.support@github.com</div>
=======
<div id="footer">
  please contact us at support@github.com
</div>
>>>>>>> iss53:index.html

верня частина над ====
це версія файла в поточній гілці.
нижня, з іншої гілки.
редагуємо конфліктний файл, удаляємо спец символи
і робимо git add file_name
коли все ок, робимо git commit


(або рішаємо конфлікт вручну:
робимос бекапи обох файлів з обох вєток,
переключаємсь на вєтку 2 (яку потім будемо мержити в 1), заміняємо проблемний файл, файлом з вєтки 1, комітимо йго,
і мержимо вєтку 2 у вєтку 1 - конфліктів не повинно буть, так як файл однаковий.
переключаємось на вєтку 2, і вносимо всі зміни в той файл, на основі даних з бекапного файла (тобто вручну відновлюємо контент з бекапа)
комітимо файл у вєтку 2 і знов мержиомо вєтку 2 у вєтку 1)


git branch -v  - показує останні коміти по кожній вєтці.

----
Віддалені репозиторії

git fetch origin - синхронізує  origin/master, витягує все нове з сервера ( origin/master - це вказівник на мастер вєтку на сервері - не на локалці)

git remote - показує всі віддалені репозиторії
git remote -v


git remote add somename git_url  - якщо є різні репозиторії, для різних команд розробників. можна добавити нову удальонну вєтку (somename)
яка буде скороченим імям на повний гіт урл

git fetch somename - для того щоб локальн затягнути все що є на сервері по цій гілці.




--
Зміни

git rm --cached readme.txt  - удаляєм файл з індекса але не удаляємо фізично (якщо помилково його добавили в гіт раніше)


git commit --amend  - заміняє попередній коміт. наприклад ми закомітили, але забули добавить файл який мав буть в цьому коміті. замість того
щоб робить новий коміт, можем типу так

 git commit -m 'initial commit'
 git add forgotten_file
 git commit --amend


відміна індексації файла
ситуація коли ми випадково добавили файл через git add але ще не закомітили. тому
git reset HEAD <file>
видаляє файл з індекса

Friday, August 16, 2013

Как с iphone зайти на localhost компьютера

Как с айфона загрузить локальный сайт, размещенный на localhost домашнего компютера.

1. убедитесь, что компьютер имеет айпи, и что сеть настроена так, чтобы айфон видел комп. Если у Вас сеть контролируется WiFi роутером, тогда все еще проще, так как у большинства роутеров есть DHCP сервер, где можно задать айпи адреса и компьютеру и айфону. Если нет роутера, а сеть WiFi раздается с компьютера, тогда попробуйте в сетевых настройках задать компьютеру любой айпи, типа 192.168.1.101

2. Если на компе установлен localhost тогда все устройства сети смогут зайти на данный хост по http://192.168.1.101. Если с iPhone так не удается зайти (не грузит вообще ничего) значит сеть не настроена, или порт 80 недоступен для других устройств. Отключите файрвол если есть такой на время тэста

3. Например Ваш локальный сайт имеет адрес mysite-local.com, чтобы зайти на него с айфона, нужно в настройках сети айфона указать адрес Вашего компьютера в качестве прокси-сервера.
Для этого на айфоне зайдите в настройки -> WiFi -> откройте детали Вашей сети (синяя стрелочка напротив сети,  к которой подключен iPhone), внизу есть секция для прокси, выбирите Вручную и пропишите в поле Сервер айпи Вашего компа (192.168.1.101 в нашем примере), а в поле Порт пропишите 80 (или тот, который у Вас настроен на localhost (если не 80, то попробуйте 8080, короче вы должны быть в курсе))

Всё готово, пробуйте!

Если нужно зайти на localhost с другого компьютера, тогда если на компе с которого нужно зайти стоит Windows, нужно в файл hosts добавить DNS запись. откройте Windows/System32/drivers/etc/hosts
и добавть строку, типа:
192.168.1.101 mysite-local.com

таким образом Вы компьютеру задали маршрут, и когда Вы наберете http://mysite-local.com комп попытается соединится с сервером на Вашем втором компе, где установлен локалхост, и таким образом загрузиться локальный сайт с localhost на втором компьютере.

Tuesday, March 19, 2013

301 Редирект для ссылки с недопустимыми символами средствами .htaccess



Нужно перенаправить испорченную CodeIgniter ссылку с символами %C2%A0 на другой адрес через .htaccess

Для примера
http://mysite.com/some-page%C2%A0
нужно
http://mysite.com/other-page


Redirect   301    /some-page%C2%A0     /other-page   не сработал

Сдесь я нашел некий пример

RewriteCond   %{THE_REQUEST}   ^[A-Z]+\ /[^%?\ ]*\%
RewriteRule    ^. http://www.example.com/     [R=301,L]

Правило редиректит все ссылки с спес символами %..

Я попробовал следующее:

RewriteCond   %{THE_REQUEST}   some-page[^%?\ ]*\%
RewriteRule   ^.    /other-page [R=301,L]

Но при тесте, мне в новую ссылку началась добавляться старая ссылка как параметр, причем многократно, так как правило начало работать рекурсивно (потому что some-page опять встречался в новой ссылке ну уже как параметр, пресечь это не удалось):

http://mysite.com/index.php/other-page?/some-page/&... etc

После гуглинга я нашел это

и сменил чуть правило

RewriteRule   ^.   /other-page [R=301,L]
to
RewriteRule   .?   /other-page$1? [R=301,L]


Итак, чтобы сделать 301 редирект битой ссылки с спец символами % нужно примерно такое:

RewriteCond   %{THE_REQUEST}   some-page[^%?\ ]*\%
RewriteRule   .?  /other-page$1? [R=301,L]

Wednesday, September 26, 2012

Access to the associative array index in Smarty


<?php
$users = array();
$users[1] = array('fname' => 'John', 'lname' => 'Smith');
$users[2] = array('fname' => 'James', 'lname' => 'Bond');

$ids = array();
$ids[] = array('uid' => 1);
$ids[] = array('uid' => 2);

$smarty->assign('users', $users);
$smarty->assign('ids', $ids);
?>

{foreach item=user from=$ids}
    {$users[$user.uid].fname} {$users[$user.uid].lname}
{/foreach}

or

{foreach item=user from=$ids}
    {assign var=u_id value=$user.uid}
    {$users.$u_id.fname} {$users.$u_id.lname}
{/foreach}


Saturday, June 13, 2009

Обновление картинки без перезагрузки HTML страницы

Постановка задачи:
Картинка на странице подгружается с php скрипта.
Допустим пользователь изменил картинку которая хранится на сервере (например зааплодил новую с помощmю плагина Uploadify), нужно теперь без перезагрузки страницы обновить картинку с того самого php скрипта.

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

Так вот, приведу пример refresh картинки на jquery

код примерно такой:

<div id="img_container">
<img src="http://site.com/img.php?img_id=1" />
</div>

<input type="button" onclick="refresh_my_img();">

<script type="text/javascript">
function refresh_my_img()
{
time = new Date();
var rand = time.getTime();
var new_src = "http://site.com/img.php?img_id=1"+"&add_param="+rand;
$("#business_logo_img").empty();
var i = new Image();
i.src = new_src;
$("#business_logo_img").append(i);
}
</script>

В данном случае, удаляется тег img и создается новый с другим src.
ОСОБОЕ ВНИМАНИЕ хочу обратить на новый ресурс картинки, в url адрес добавился новый параметр add_param=rand где rand типа случайное уникальное число.
Это сделано для того, чтобы браузер не считал что адрес картинки старый.
Если бы мы для картинки просто подставили бы старый url (url того же php скрипта, который был до этого), то браузер посчитал бы что картинка старая, и не обновил бы её, а так, с помощью левого параметра, мы просто подставляем картинке уникальный новый url, это заставит браузер послать запрос на php скрипт, который в свою очередь вернет нам новую картинку. В самом же скрипте новый параметр обрабатывать не нужно.

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