четвер, 18 грудня 2014 р.

linux dynamic dns: оновлювати лише для мобільного пристрою wwan0

Приклад використання схеми: скажімо, пристрій на лінуксі крім мобільного пристрою використовує ще загальнодоступні wi-fi. На загальнодоступних wi-fi для пристрою будуть закриті потрібні порти, тому доцільно оновлювати запис динамічного dns, наприклад, лише для зв’язку через usb-модем, який отримує "білу" IP адресу.


Приклад оновлення динамічного dns лише для мобільного пристрою:

/etc/network/if-up.d/wwan0_is_up
#!/bin/sh

echo "wwan0 is up" >> /var/log/wwan0.log
wget -q --read-timeout=0.0 --waitretry=5 --tries=400 --background http://freedns.afraid.org/dynamic/update.php?[код вашого сервісу]
Створений скрипт потрібно зробити виконуваним

sudo chmod +x /etc/network/if-up.d/wwan0_is_up

і помістити в скрипт

/etc/network/interfaces

наприклад:

# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto eth0
allow-hotplug wwan0
iface wwan0 inet dhcp
post-up /etc/network/if-up.d/wwan0_is_up

Винятком може бути доступ через власну wi-fi точку, де налаштоване форвардування портів. Для таких винятків розглянемо скрипт пізніше, коли буде натхнення.

пʼятницю, 12 грудня 2014 р.

Excel + VBA - вибрати з комірки лише цифри

ALT+F11 -> Insert -> Module

Function DigitsOnly(S As String) As String
  Dim X As Long
  DigitsOnly = Replace(S, " ", "")
  If DigitsOnly Like "+91*" Then DigitsOnly = Mid(DigitsOnly, 4)
  For X = 1 To Len(DigitsOnly)
    If Mid(DigitsOnly, X, 1) Like "[!0-9]" Then Mid(DigitsOnly, X) = " "
  Next
  DigitsOnly = Replace(DigitsOnly, " ", "")
End Function 

=DigitsOnly(A1)

(протестовано в Office 2007)

пʼятницю, 5 грудня 2014 р.

linux - скрипт для сигналізування про завершення зарядки батареї

Раніше вже знайдено як виводити в консолі статус заряду батареї
http://marchelloua.blogspot.com/2014/11/linux-console.html

Але туди регулярно дивитися не зручно і не потрібно.

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

Нижче наведено скрипт, який стартуємо після завантаження графічної оболонки, після чого скрипт резидентно сидить як процес і регулярно опитує стан батареї, після чого сигналізує діалоговим вікном і звуком.

#!/bin/sh

DELAY=180
while sleep $DELAY
do
valuea=`cat /sys/class/power_supply/BAT0/capacity`
echo "$valuea"
if [ $valuea -eq "104" ] || [ $valuea -eq "99" ] || [ $valuea -eq "100" ] || [ $valuea -eq "105" ] || [ $valuea -eq "101" ] || [ $valuea -eq "102" ] || [ $valuea -eq "103" ] || [ $valuea -eq "105" ]
then
  echo "please unplug charger"
  aplay /home/ymarkiv/Dropbox/music/wav/animals131.wav
  if ! xmessage -nearmouse -buttons continue:0,stop:1 "please unplug charger"
  then
       exit 0
  fi
else
  echo "still charging"
fi
done
/home/ymarkiv/bash_learn/power_100.sh (END)

Oracle - convert clob into varchar2

https://asktom.oracle.com/pls/asktom/f?p=100:11:0::NO::P11_QUESTION_ID:367980988799


create or replace procedure p ( p_str in varchar2 )
is
   l_str   long := p_str;
begin
   loop
      exit when l_str is null;
      dbms_output.put_line( substr( l_str, 1, 250 ) );
      l_str := substr( l_str, 251 );
   end loop;
end;
/

середу, 3 грудня 2014 р.

ubuntu - install toad for oracle

http://www.toadworld.com/products/toad-for-oracle/b/weblog/archive/2012/10/01/toad-11-6-runs-natively-on-linux.aspx

Here are the steps:
  1. Download Toad for Oracle 11.6 Commercial (32-bit) – choose the special, smaller MSI version (please note that the much larger downloads built on top of the “Quest Installer” not tested)
Поправка: використовую безкоштовну версію toad 
google: download toad for oracle free

 2. Download the Oracle 11.2.0.1.0 client zip file (Note that 10g clients are no longer available)

Поправка: з часу написання статті шлях змінився
актуальний шлях: 
wget -c http://download.oracle.com/otn/nt/oracle11g/112010/win32_11gR2_client.zip

а взагалі в гуглі: "install" Oracle 11.2.0.1.0 client
або в гуглі: Oracle Database 11g Release 2 for Microsoft Windows (32-bit)

3. Unzip the Oracle 11.2.0.1.0 client download into your user’s home directory (e.g. ~/client)
  1. Run command: wine --version and verify that you have at least version 1.4 (latest stable)
  2. If you need to update wine – here are the steps for Ubuntu (see Wine HQ for different Linux)
    1. Run command: sudo add-apt-repository ppa:ubuntu-wine/ppa
    2. Run command: sudo apt-get update
    3. Run command: sudo apt-get install wine
    4. Recheck your wine version – repeat steps a to c above until you see wine 1.4
  3. Run command ./winetricks gdiplus mdac28 msxml6 vb6run vcrun6sp6 tahoma msls31 riched20 riched30 richtx32 comctl32 comctl32.ocx
Поправка: tahoma не завантажується самостійно, тому 
використовую наступну інструкцію: 

http://makandracards.com/makandra/1258-install-the-verdana-and-tahoma-fonts-under-ubuntu-linux 

Tahoma:
wget http://download.microsoft.com/download/ie6sp1/finrel/6_sp1/W98NT42KMeXP/EN-US/IELPKTH.CAB
cabextract -F 'tahoma*ttf' IELPKTH.CAB
mv -f tahoma*ttf /usr/share/fonts/truetype/msttcorefonts/
chmod 644 /usr/share/fonts/truetype/msttcorefonts/tahoma*
fc-cache -v
rm -f IELPKTH.CAB
 
 
  1. Run command: cd ~/client (or whatever directory you choseto unzip Oracle client to back in step #3)
  2. Run command: wine setup.exe (this will invoke the Oracle client installer program)
  3. Choose the third option: RUNTIME (754 MB) – see screen snapshot in Figure 2 below
  4. Select an Oracle home that you like and will remember – see screen snapshot in Figure 3 below
  5. Create a tnsnames.ora text file to point to your database(s) either manually or using Oracle netca
  6. Run command to copy your tnsnames.ora file to your Oracle client home selected in step 11 above: cp ~/tnsnames.ora ~/.wine/drive_c/oracle/product/10.2.0/client_1/NETWORK/ADMIN
  7. Run command: wine msiexec /i toad_for_oracle_11.6.msi (this runs the base Toad product installer)
  8. Run Toad either via desktop icon or menu Applications->wine->programs->Quest Software->Toad (Note – be patient first time Toad starts as it needs to copy some files from install to app directories)
Enjoy Toad on Linux!

суботу, 29 листопада 2014 р.

курс python @ codecademy

Найкращий безкоштовний (для мене) з усіх онлайн курсів python наразі знайшов на http://www.codecademy.com/learn



Інтерактивна перевірка синтаксису, підказки для виконання завдань.

Вже пройшов 17%, пропоную наздоганяти :)

Upd: 05/12/2014 -> 19%

посвятив дружину в лінуксоїди :)

Посвятив дружину в лінуксоїди :)
Точніше, в мене вдома лише лінукс, тому як користувач дружина працює в лінуксі вже давно. А сьогодні кохана самостійно перевстановила ubuntu desktop командою в терміналі! :-)

понеділок, 24 листопада 2014 р.

Oracle - додати матеріалізовані в’юшки до групи оновлення

--створення групи оновлення 
exec dbms_refresh.make('"RATER"."RATER_RG"',list=>null,next_date=>null,interval=>null,implicit_destroy=>FALSE,lax=>FALSE,rollback_seg=>NULL,push_deferred_rpc=>TRUE,refresh_after_errors=>FALSE,purge_option => 1,parallelism => 0,heap_size => 0);

--виведення переліку матеріалізованих в’юшок в схемі
select owner || '.' || name as t1 from all_snapshots where owner = 'RATER' order by name

--додавання в’юшки до групи 
exec dbms_refresh.add(name=>'"RATER"."RATER_RG"',list=>'"RATER"."ACCESSORIALS"');

--  +  не забуваємо про commit!

пʼятницю, 21 листопада 2014 р.

Oracle sql developer - code beautifier (format)

Oracle sql developer - так званий "code beautifier" в цій програмі називається просто "Format" і за замовчуванням викликається за допомогою комбінації клавіш Ctrl+F7. В Ubuntu дана комбінація є системною і тому можна викликати "Format" через контекстне меню (правою кнопкою мишки) або можна переналаштувати комбінацію клавіш через Tools -> Preferences -> Shortcut keys.

Oracle sql developer
Version 4.0.3.16

Ubuntu linux - приклад (однією командою) оновлення переліку пакетів, апгрейду, очищення і автовилучення вже не потрібних пакетів

sudo apt-get update; sudo apt-get upgrade; sudo apt-get clean; sudo apt-get autoremove

Oracle - приклад вибірки важких запитів (сортування за колонкою DISK_READS за спаданням)

Reports expensive SQL from V$SQLAREA, V$SQLTEXT view
Joins to V$SQLTEXT using ADDRESS column
 
select     sql_text
, lpad(username,9)   parsing_user
, executions
, loads
, DISK_READS
, BUFFER_GETS    
, ROWS_PROCESSED 
from v$sqlarea  a
,    dba_users  b
where upper(sql_text) not like upper('%dbms%')
  and a.PARSING_USER_ID = b.user_id
--and   DISK_READS > &number_of_expensive_DISK_READS
--and   b.username = upper('&parsing_username')
order by DISK_READS desc
,        ROWS_PROCESSED desc
,        BUFFER_GETS desc
,        username
/
 
 
 
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
"CORE 11.2.0.4.0 Production"
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production 

Oracle - приклад створення матеріалізованої в’юшки на базі попередньо створеної таблиці (prebuilt table)

CREATE MATERIALIZED VIEW "SCHEME"."SNAP_1"
ON PREBUILT TABLE WITHOUT REDUCED PRECISION
  AS select
COLUMN1, COLUMN2
from TABLE;





Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
"CORE    11.2.0.4.0    Production"
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production

вівторок, 23 вересня 2014 р.

raspberry pi - ipv6 - лінки для початку роботи

 Почалося все з того, що мій рідний провайдер перестав видавати зовнішню IP адресу для мого роутера. Замість 91.XXX.YYY.ZZZ почав отримувати 10.XXX.YYY.ZZZ

В результаті - біда і печаль - з роботи не зміг доступатися до домашнього raspberry pi.

Провайдер запропонував перейти на дорожчий тариф... Подивився той тариф і вирішив спробувати налаштувати ipv6, щоб не переплачувати 20 грн. щомісяця (гроші невеликі, але якщо існує безкоштовне рішення, то варто скористатися).

Лінки для початку роботи: 

http://ipv6test.google.com/
https://www.tunnelbroker.com/
http://ubuntuforums.org/showthread.php?t=2245368
http://www.raspberrypi.org/forums/viewtopic.php?f=66&t=15886

(далі буде - якщо не буде ліньки довести справу до кінця)

пʼятницю, 22 серпня 2014 р.

Oracle - report sql monitor

SELECT DBMS_SQLTUNE.REPORT_SQL_MONITOR
            ( sql_id         => 'a71hfjg8576s2',
              session_id     => 1234,
              session_serial => 12,
              report_level   => 'all',
              type           => 'ACTIVE' )
  FROM dual;

sql result -> blob -> html -> browser

вівторок, 12 серпня 2014 р.

jquery + sqlite => create database

<Doctype html>
<html>
<head>
  <script src ="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
 <script>

  $(document).ready( function(){

  $("#button1").click( function(){

  var db = openDatabase("Motorola","1.0","Moto mobile database","200000");

  alert('Database has been created');

  }); 

  }); 

 </script>
</head>
<body>

<input id="button1" type="button" value="Create DataBase"/>

</body>
</html>

https://www.youtube.com/watch?v=MSUdI-DdFOc

пʼятницю, 20 червня 2014 р.

прикольний спам (2)

  Знову прийшов прикольний спам...
 
From: sudak  <info@sudak-property.com.ua>
Date: 20 June 2014 18:45 
Subject: Крым снова ждет Вас

суботу, 14 червня 2014 р.

прикольний спам

 Мені прийшов прикольний спам, раніше від нігерійців було, а тепер - від американського солдата: 

My name is Mark Lee, I'm American Soldier
Please I have information for you; I want to invest in your country.
Mark


Date: Sat, 14 Jun 2014 15:56:09 +0100
Message-ID: <CAKWZmV0nYNYQsd2_ZKxTwWM=ojrKxJQBD1q==VVvtMjEd4Ny4g@mail.gmail.com>
Subject: Hello
From: Mark Lee <williammccarthy0001@gmail.com>
To: undisclosed-recipients:;

четвер, 24 квітня 2014 р.

python - перші крочки (fetch url)

Перші крочки в python робити цікаво тоді, коли дійсно потрібно виконати певну задачу, бо просто відобразити "Hello world" ні до чого не мотивує.

Мені було потрібно звернутися до певної url і відобразити "0", якщо нема помилок, або "1", якщо є помилка.

Встановив середовище для розробки:

sudo apt-get install idle

Написав скрипт:

from subprocess import call
return_code = call(['wget', 'http://server.com'])
print return_code


Умова - попередньо повинен бути встановлений wget (крос-платформенний download manager).

Наступний крок - змусити цей код працювати також під windows (коли буде натхнення).

понеділок, 14 квітня 2014 р.

postfix: як створити аліас (linux)

Ця коротенька інструкція має сенс для тих, хто володіє:

1) власним доменом ( наприклад, prizvysche.org )
2) або власним субдоменом ( наприклад, prizvysche.firma.org ). 

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

Створити аліас в поштовому сервері postfix:

1) sudo nano /etc/aliases

внести новий запис такого вигляду:

tmp:          user

де tmp - аліас
user - справжній користувач

2) sudo postalias /etc/aliases

для публікації аліасу

3) sudo /etc/init.d/postfix reload

для перезавантаження поштового сервера.

Готово.

понеділок, 3 лютого 2014 р.

віддалена робота та фріланс - remote work and freelance

Хороша стаття:

http://blog.mongohq.com/making-remote-work-work-an-adventure-in-time-and-space/


Мій особистий досвід (деякі нариси). 
За віддаленою роботою - майбутнє, таке моє особисте суб'єктивне враження. Звичайно, мусить статися серйозний особистісний переворот свідомості, щоб переключитися на такий спосіб заробляння грошей.

  • По-перше, де знайти людину, яка погодиться мені давати якісь завдання? Ну мені простіше, бо мене знайшли самі. Допоміг Linkedin. 

  • А що, коли мені не заплатять? Ну що ж, зате буде досвід. Так я був налаштований і в результаті все одно отримав свої гроші. 

  • Інструменти: скайп, розшарені документи google, в перспективі redmine, github

При цьому важливо не забувати про реальне життя ;-) 


середу, 29 січня 2014 р.

рецепт: плов

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

- м’ясо порізати і зварити (або зварити і тоді порізати)

- зажарка: до м’яса додати порізану цибульку і потерту моркву, пів пачки масла, три столові ложки олії, посолити, поперчити і тушити на сковорідці до готовності

- готовий рис викласти в миску, вилити зі сковорідки і дуже перемішати добре до однорідного стану

- пробуємо, досолюємо і доперчуємо.

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

рецепт: зупка-капуснячок

- (варіант з м’ясом чи без) кинути перед картоплею м’ясо, збирати весь час піну ложкою з дірками

- картоплю (3 середні) обібрати, помити, покришити, кинути варити і помішати, щоб не прилипла

- накришити капусту (половинка), обрізати крім качана, кинути до картоплі, нехай кипить

- посолити - чайна ложка

- роблю зажарку: морква на терці, цибулька на квадратики, на олійці (трошки), поки не буде готове на вигляд, додати результат до картоплі і капусти

- перець і ще солі і на малому вогні, поки не буде картопля м’яка

- додати сухої петрушки і ще трохи лишити кипіти.