BREAKPOINTDEBUGGING MANUAL
My English has been checked all by translation software.
Therefore, your translation software may be able to translate my English.
The contents links.
The basic concept.
How to construct environment which can do step execution.
Recommendation file cache extention of production server.
How to do breakpoint debugging.
How to code breakpoint debugging.
Running procedure.
How to use logger.
Exception hierarchical structure.
Useful class index.
My viewpoint about PHP-types for reading my PHP code.
LICENSE:
The basic concept.
First, I thank it that I could learn concept of debugging with "WRITING SOLID CODE" (Author: Steve Maguire : Microsoft Press (ASCII), 1995).
This is package for breakpoint debugging.
Also, you can use as basics of other PHP program or PEAR package if you want
because this package has necessary minimum features.
It is "php.ini" file setting fixation feature, PHP code synchronization feature,
error log feature by global handler,
the override class feature and execution mode.
How to construct environment which can do step execution.
Recommendation IDE.
Recommendation environment for "PHP5.3" Windows.
Recommendation environment for "PHP5.4" Windows.
Recommendation environment for "PHP5.5" Windows.
Recommendation environment for "PHP5.6" Windows.
Recommendation setting procedure for development of "XAMPP 1.8.2".
Recommendation environment for "PHP5.3" Linux.
Recommendation environment for "PHP5.4" Linux.
Recommendation environment for "PHP5.5" Linux.
Recommendation environment for "PHP5.6" Linux.
Recommendation environment for "PHP7.0" Linux.
Recommendation setting procedure for development of "Ubuntu *.* LTS desktop".
Recommendation IDE.
"NetBeans IDE 8.1".
Because "java" development team is making this IDE.
NOTICE: "if" statement should be coded by plural line as below because line feed of "//" line is not deleted by format.
if ($a // Description 1.
|| $b // Description 2.
|| ($c || $d) // Description 3.
|| ($e && $f) // Description 4.
&& $g // Description 5.
&& ($h || $i) // Description 6.
&& ($j && $k) // Description 7.
) {
Recommendation environment for "PHP5.3" Windows.
"WindowsXP Professional (VC6)" + "XAMPP 1.7.4 (VC6)" + "php_xdebug-2.1.2-5.3-vc6.dll (VC6)".
Or, "Windows7 (VC9)" + "XAMPP 1.7.7 (VC9)" + "php_xdebug-2.2.7-5.3-vc9.dll (VC9)".
Recommendation environment for "PHP5.4" Windows.
"Windows7 (VC9)" + "XAMPP 1.8.2 (VC9)" + "php_xdebug-?.?.?-5.4-vc9.dll (VC9)".
Recommendation environment for "PHP5.5" Windows.
"Windows8 (VC11 perhaps)" + "XAMPP 5.5.? (VC11 perhaps)" + "php_xdebug-?.?.?-5.5-vc11.dll (VC11 perhaps)".
Recommendation environment for "PHP5.6" Windows.
"Windows8 (VC11 perhaps)" + "XAMPP 5.6.? (VC11 perhaps)" + "php_xdebug-?.?.?-5.6-vc11.dll (VC11 perhaps)".
Also, "Windows10" is "VC14".
Recommendation setting procedure for development of "XAMPP 1.8.2".
### "XAMPP" setting procedure. ###
// Inbound connection must be disconnected except "BOOTPC" and "DOMAIN" of "C:\WINDOWS\system32\svchost.exe" by firewall of a software.
// Disable "IIS" server because port 80 conflicts with "Apache".
// Add the following to environment path.
// [control panel] - [system] - [detail] - [environment variables] - "Path" - [edit...]
;C:\xampp\php;C:\xampp\mysql\bin
// Disconnect outbound HTTP connection of Apache.
C:\xampp\apache\conf\httpd.conf
before:
Listen 80
after:
Listen <IP_ADDRESS>:80
// Disconnect outbound SSL connection of Apache.
C:\xampp\apache\conf\extra\httpd-ssl.conf
before:
Listen 443
after:
Listen <IP_ADDRESS>:443
// Change the configuration file of "MySQLi".
C:\xampp\mysql\bin\my.ini
.
.
.
[mysqld]
default-storage-engine=innodb
character-set-server=utf8
collation-server=utf8_general_ci
# Ignores character sets information which was sent from client, so it uses character sets of default of server.
skip-character-set-client-handshake
.
.
.
[mysqldump]
default-character-set=utf8
.
.
.
[mysql]
default-character-set=utf8
.
.
.
// Change setting of "phpMyAdmin".
// Execute "C:\xampp\phpMyAdmin\examples\create_tables.sql" import by "phpMyAdmin".
// Then, change "C:\xampp\phpMyAdmin\config.inc.php" file.
before:
$cfg['Servers'][$i]['auth_type'] = 'http'; // Authentication method (config, http or cookie based)
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['AllowNoPassword'] = true;
after:
$cfg['Servers'][$i]['auth_type'] = 'config'; // Authentication method (config, http or cookie based)
$cfg['Servers'][$i]['password'] = '<your password>';
// $cfg['Servers'][$i]['AllowNoPassword'] = true;
$cfg['Servers'][$i]['tracking'] = 'pma_tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma_userconfig';
// Extensions which "phpMyAdmin" needs. ( Confirms by "phpinfo()" )
"zlib" or "bz2"
"mbstring"
"ctype"
"GD2"
"mcrypt"
### "XDebug" setting procedure. ###
// Place "php_xdebug-2.3.3-5.4-vc9.dll" file ( last versions for Windows7 ) to "C:\xampp\php\ext\".
// Set "C:\xampp\php\php.ini" file as follows.
zend_extension = "C:\xampp\php\ext\php_xdebug-2.3.3-5.4-vc9.dll"
xdebug.remote_enable = 1
xdebug.remote_handler = dbgp
xdebug.remote_mode = req
xdebug.remote_host = <IP_ADDRESS>
xdebug.remote_port = 9000
// Then, use this package.
Recommendation environment for "PHP5.3" Linux.
"Ubuntu 14.04 LTS desktop (Linux kernel v3.13-)" + "xampp-linux-1.7.7" + "xdebug.so" which made by command.
Recommendation environment for "PHP5.4" Linux.
"Ubuntu 12.04 LTS desktop" + "LAMPP of Ubuntu" + "xdebug.so of Ubuntu".
Or, "Ubuntu 14.04 LTS desktop (Linux kernel v3.13-)" + "xampp-linux-1.8.2" + "xdebug.so" which made by command.
Recommendation environment for "PHP5.5" Linux.
"Ubuntu 14.04 LTS desktop" + "LAMPP of Ubuntu" + "xdebug.so of Ubuntu".
Or, "Ubuntu 14.04 LTS desktop (Linux kernel v3.13-)" + "xampp-linux-5.5.?" + "xdebug.so" which made by command.
Recommendation environment for "PHP5.6" Linux.
"Ubuntu 14.04 LTS - Ubuntu 16.04 LTS desktop" + "LAMPP of Ubuntu" + "xdebug.so of Ubuntu".
Or, "Ubuntu 14.04 LTS desktop (Linux kernel v3.13-)" + "xampp-linux-5.6.?" + "xdebug.so" which made by command.
Recommendation environment for "PHP7.0" Linux.
"Ubuntu 14.04 LTS - Ubuntu 16.04 LTS desktop" + "LAMPP of Ubuntu" + "xdebug.so of Ubuntu".
Recommendation setting procedure for development of "Ubuntu *.* LTS desktop".
### Disconnect inbound connection by using "ufw" before online. ###
// Enables firewall.
sudo ufw enable
// Disconnects inbound connection.
sudo ufw default DENY
// Disables logging.
sudo ufw logging off
// Confirms status of firewall.
sudo ufw status verbose
### Uninstallation procedure. ###
// Uninstalls "PEAR".
sudo apt-get purge php-pear
// Uninstalls "phpMyAdmin".
sudo apt-get purge phpmyadmin
// Uninstalls "LAMP" of "tasksel".
sudo tasksel remove lamp-server
// Uninstalls "PHP5" packages.
sudo apt-get purge php5 php5-cli php5-common php5-curl php5-fpm php5-gd php5-intl php5-json php5-mcrypt php5-mysql php5-xdebug
// Confirms that "PHP5" package listing does not exist.
dpkg -l | grep php5
// Deletes unnecessary package.
sudo apt-get autoremove
### "LAMPP" installation procedure. ###
// Updates the packages index.
sudo apt-get update
// The command which will be able to use "add-apt-repository".
sudo apt-get install software-properties-common
// Displays "PHP" repositories.
cd /etc/apt/sources.list.d/
gedit ondrej-php*
// Deletes "PHP" repositories.
sudo add-apt-repository --remove ppa:ondrej/php5-oldstable
sudo add-apt-repository --remove ppa:ondrej/php5
sudo add-apt-repository --remove ppa:ondrej/php5-5.6
sudo add-apt-repository --remove ppa:ondrej/php-7.0
sudo add-apt-repository --remove ppa:ondrej/php
// Confirms that "PHP" repository does not exist.
cd /etc/apt/sources.list.d/
ls -la ondrej-php*
// Adds "PHP5.4" repository (Ubuntu 12.04 LTS).
sudo add-apt-repository ppa:ondrej/php5-oldstable
// Or, adds "PHP5.5" repository (Ubuntu 14.04 LTS).
sudo add-apt-repository ppa:ondrej/php5
// Or, adds "PHP5.6" repository (Ubuntu 14.04 LTS - Ubuntu 16.04 LTS).
sudo add-apt-repository ppa:ondrej/php5-5.6
// Or, adds "PHP7.0" repository (Ubuntu 14.04 LTS - Ubuntu 16.04 LTS).
sudo add-apt-repository ppa:ondrej/php-7.0
// Updates the packages index.
sudo apt-get update
// Installs "PHP5.4-5.6". And, installs "Apache" for current "PHP" version.
sudo apt-get install php5
// Or, installs "PHP7.0". And, installs "Apache" for current "PHP" version.
sudo apt-get install php
// Installs "MySQLi" for current "Apache" version.
sudo apt-get install mysql-server
// // Readjusts the root user password of "MySQLi". ( If necessary )
// mysql -u root -p
// mysql>SET PASSWORD FOR 'root'@'localhost' = PASSWORD('<your password>');
// Installs "phpMyAdmin" for current "PHP" and "MySQLi" version.
sudo apt-get install phpmyadmin
// Displays the document of "phpMyAdmin".
firefox "/usr/share/doc/phpmyadmin/Documentation.html"
### "PEAR" installation procedure. ###
// Updates the packages index.
sudo apt-get update
// Installs "PEAR".
sudo apt-get install php-pear
### "NetBeans IDE" installation procedure. ###
// Updates the packages index.
sudo apt-get update
// Please, download the file to install "NetBeans IDE". (Ubuntu 12.04 LTS - Ubuntu 14.04 LTS)
firefox "https://netbeans.org/downloads/8.0.2/"
// Please, download the file to install "NetBeans IDE". (Ubuntu 16.04 LTS)
firefox "https://netbeans.org/downloads/8.1/"
// Moves to the download directory.
cd ~/<download>
// Displays the "NetBeans IDE" installation filename.
ls -la netbeans*
// Makes the "NetBeans IDE" installation file executable.(Ubuntu 12.04 LTS - Ubuntu 14.04 LTS)
chmod u+x netbeans-8.0.2-php-linux.sh
// Makes the "NetBeans IDE" installation file executable.(Ubuntu 16.04 LTS)
chmod u+x netbeans-8.1-php-linux.sh
// Uninstalls "Java".
sudo apt-get purge openjdk*
// Installs "Java7".(Ubuntu 12.04 LTS - Ubuntu 14.04 LTS)
sudo apt-get install openjdk-7-jre
// Installs "Java8".(Ubuntu 16.04 LTS)
sudo apt-get install openjdk-8-jre
// Displays the version of "Java".
java -version
// Displays the path of "Java".
sudo update-alternatives --config java
// Installs "NetBeans IDE".(Ubuntu 12.04 LTS - Ubuntu 14.04 LTS)
./netbeans-8.0.2-php-linux.sh
// Installs "NetBeans IDE".(Ubuntu 16.04 LTS)
./netbeans-8.1-php-linux.sh
### "LAMPP" setting procedure. ###
// Disconnects outbound connection of Apache and enables SSL of Apache.
gksudo gedit /etc/apache2/ports.conf
// before:
Listen 80
// after:
Listen <IP_ADDRESS>:80
// before:
Listen 443
// after:
NameVirtualHost *:443
Listen <IP_ADDRESS>:443
// before:
Listen 443
// after:
Listen <IP_ADDRESS>:443
// Sets user and group of Apache, and sets symbolic link to "phpMyAdmin".
gksudo gedit /etc/apache2/httpd.conf
User <your user name>
Group <your group name>
Alias /phpmyadmin "/usr/share/phpmyadmin"
<Directory "/usr/share/phpmyadmin/">
Options MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from <IP_ADDRESS>
</Directory>
// Set "MySQLi".
gksudo gedit /etc/mysql/my.cnf
.
.
.
[mysqld]
default-storage-engine=innodb
character-set-server=utf8
collation-server=utf8_general_ci
# Ignores character sets information which was sent from client, so it uses character sets of default of server.
skip-character-set-client-handshake
# Database compression for performance. CAUTION: Database must not be used by plural compression format.
#innodb_file_format=Barracuda
# Makes a file per table for performance. CAUTION: Database must not be used by plural table format.
#innodb_file_per_table=1
.
.
.
[mysqldump]
default-character-set=utf8
.
.
.
[mysql]
default-character-set=utf8
.
.
.
// Change setting of "phpMyAdmin".
// Executes "/usr/share/doc/phpmyadmin/examples/create_tables_sql.gz" import by "phpMyAdmin".
// Copies the sample configuration file to configuration file.
sudo cp --verbose --interactive --update /usr/share/phpmyadmin/config.sample.inc.php /etc/phpmyadmin/config.inc.php
// Edits the configuration file.
sudo gedit /etc/phpmyadmin/config.inc.php
before:
$cfg['Servers'][$i]['auth_type'] = 'cookie';
after:
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'wasapass'; // use here your password
before:
// $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
// $cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
// $cfg['Servers'][$i]['relation'] = 'pma_relation';
// $cfg['Servers'][$i]['table_info'] = 'pma_table_info';
// $cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
// $cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
// $cfg['Servers'][$i]['column_info'] = 'pma_column_info';
// $cfg['Servers'][$i]['history'] = 'pma_history';
// $cfg['Servers'][$i]['tracking'] = 'pma_tracking';
// $cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
// $cfg['Servers'][$i]['userconfig'] = 'pma_userconfig';
after:
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['relation'] = 'pma_relation';
$cfg['Servers'][$i]['table_info'] = 'pma_table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma_column_info';
$cfg['Servers'][$i]['history'] = 'pma_history';
$cfg['Servers'][$i]['tracking'] = 'pma_tracking';
$cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
$cfg['Servers'][$i]['userconfig'] = 'pma_userconfig';
// Extensions which "phpMyAdmin" needs. ( Confirms by "phpinfo()" )
"zlib" or "bz2"
"mbstring"
"ctype"
"GD2"
"mcrypt"
// Creates a document root.
mkdir ~/private-www
// Copies the default virtual host setting file to new file "mysite".
sudo cp --verbose --interactive --update /etc/apache2/sites-available/default /etc/apache2/sites-available/mysite
// Copies the default SSL virtual host setting file to new file "mysite-ssl".
sudo cp --verbose --interactive --update /etc/apache2/sites-available/default-ssl /etc/apache2/sites-available/mysite-ssl
// Edits the "mysite" file.
gksudo gedit /etc/apache2/sites-available/mysite
// before:
DocumentRoot /var/www
// after:
DocumentRoot /home/<your user name>/private-www
// before:
<Directory /var/www/>
// after:
<Directory /home/<your user name>/private-www/>
// Edits the "mysite-ssl" file.
gksudo gedit /etc/apache2/sites-available/mysite-ssl
// before:
<VirtualHost _default_:443>
// after:
<VirtualHost *:443>
// before:
DocumentRoot /var/www
// after:
DocumentRoot /home/<your user name>/private-www
// before:
<Directory /var/www/>
// after:
<Directory /home/<your user name>/private-www/>
// Disables default virtual host and enables new virtual host.
sudo a2dissite default && sudo a2ensite mysite
// Disables default SSL virtual host and enables new SSL virtual host.
sudo a2dissite default-ssl && sudo a2ensite mysite-ssl
### "XDebug" setting procedure. ###
// Installs "XDebug" package.
sudo apt-get install php5-xdebug
// Displays the file path of "xdebug.so".
sudo find "/usr/lib/php5" -name "xdebug.so"
// Adds setting of "XDebug" package to "php.ini" file.
gksudo gedit /etc/php5/apache2/php.ini
[xdebug]
zend_extension = "/usr/lib/php5/<DATE+lfs>/xdebug.so"
xdebug.remote_enable = 1
xdebug.remote_handler = dbgp
xdebug.remote_mode = req
xdebug.remote_host = <IP_ADDRESS>
xdebug.remote_port = 9000
// Confirms by CLI.
php -v
// Confirms by CGI.
gedit ~/private-www/index.php
<?php phpinfo(); ?>
firefox "localhost"
// Then, use this package.
### Execution file creation. ###
// Creates Apache execution file.
gedit ~/<desktop>/Apache.sh
#!/bin/bash
# Restarts Apache.
sudo service apache2 restart
# Stands by at this line until input.
read Wait
# Stops Apache.
sudo service apache2 stop
// Creates "MySQLi" execution file.
gedit ~/<desktop>/MySQLi.sh
#!/bin/bash
# Restarts Apache.
sudo service apache2 restart
# Restarts "MySQLi".
sudo service mysql restart
# Stands by at this line until input.
read Wait
# Stops "MySQLi".
sudo service mysql stop
# Stops Apache.
sudo service apache2 stop
// Creates "phpMyAdmin" execution file.
gedit ~/<desktop>/phpMyAdmin.sh
#!/bin/bash
# Restarts Apache.
sudo service apache2 restart
# Restarts "MySQLi".
sudo service mysql restart
# Starts "phpMyAdmin".
firefox "localhost/phpmyadmin/"
# Stands by at this line until input.
read Wait
# Stops "MySQLi".
sudo service mysql stop
# Stops Apache.
sudo service apache2 stop
// Makes created shell files executable.
find ~/<desktop>/ -type f -regex ".+\.sh" -exec sudo chmod 0700 {} \;
Recommendation file cache extention of production server.
I recommend "Zend OPcache" extention.
Because this extension is stable.
1. My unit tests succeeded with it. Such as calling CLI from CGI with "popen()" function.
2. It is core extension of "PHP5.5".
3. Its development team have several "PHP" coder.
Also, this extension is fast.
1. The speed decelerates hardly even if the number of users increases.
2. This extention caches op code after optimization.
As the example, the following code excepts debugging code from cache at release.
Example:
if (false) { // Excepts from this line.
// Debug codes.
.
.
.
} // Excepts until this line.
How to make this Zend extention is same as pecl extention in case of Windows "VC9".
Usage of "php_opcache.dll" file:
1. Move to "C:\xampp\php\ext\php_opcache.dll".
2. Add following lines into "php.ini" file, then save the file.
zend_extension = "C:\xampp\php\ext\php_opcache.dll" ; This line must be before next line.
zend_extension = "...\php_xdebug-....dll"
[Zend OPcache]
opcache.memory_consumption = 128
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 4000
opcache.fast_shutdown = 1
; Constant Value: 0 We cannot call command to get result from CGI because a deprecated prefix is added in case of first time.
opcache.enable_cli = 0
; Constant Value: 1 Because modified "*.php" files must be cached.
opcache.validate_timestamps = 1
; Development Value: 0 Because modified "*.php" files must be cached.
; Production Value: 2 Because production server want to modify a file during execution.
opcache.file_update_protection = 0
; Development Value: 0 Because modified "*.php" files must be cached.
; Production Value: 60 Because production server does not want to access a file as much as possible.
opcache.revalidate_freq = 0
3. Restart apache.
How to do breakpoint debugging.
Stops at breakpoint if error.
Next, displays the bug position by browser.
Next, we can see its result with variables window.
Please, follow procedure if you use "NetBeans IDE".
Preparing procedure:
Check "the watch and the balloon evaluation" of "[tool] - [option] - [PHP] - [debug]".
Procedure 1:
Execute project.
Then, stops at breakpoint if error.
Next, see browser's error display.
Procedure 2:
Double click call stack window line which has error line.
Then, jumps to its error code.
Next, see variables window.
Or, add variable which is not displayed to variables window.
Or, Procedure 2:
Do the step execution until error line.
Or, set breakpoint to error line by IDE, then restart.
Next, select a code of variable, function or conditional expression with mouse.
Or, change a code, then select it.
Next, point it with mouse.
Then, we can see its result.
CAUTION 1: Do not select a class alias of "use as" statement.
CAUTION 2: Do not have a watching variable before execution start.
How to code breakpoint debugging.
We must code as follows to process in "BreakpointDebugging" class.
We should verify an impossible "parameters and return value" of "function and method" with "\BreakpointDebugging::assert()".
Also, we should verify other impossible values of those.
We do not need error and exception handler coding because an error and an exception
which wasn't caught are processed by global handler in "BreakpointDebugging" class.
Example:
<?php
require_once './BreakpointDebugging_Inclusion.php';
use \BreakpointDebugging as B;
B::checkExeMode(); // Checks the execution mode.
$logData = 'Data character string.';
// If debug execution mode.
// "\BreakpointDebugging" character string should be used for "isDebug()" class method because this is replaced to literal on production mode.
if (\BreakpointDebugging::isDebug()) {
// "\BreakpointDebugging" character string should be used for "assert()" class method because this is commented out in production mode.
\BreakpointDebugging::assert(is_string($logData));
echo $logData;
} else { // If release execution mode.
$lockByFlock = &\BreakpointDebugging_LockByFlock::singleton(); // Creates a lock instance.
$lockByFlock->lock(); // Locks php-code.
B::filePutContents('Somethig.log', $logData);
$lockByFlock->unlock(); // Unlocks php-code.
}
?>
Running procedure.
Please, run the following procedure.
Maintenance procedure 1: Download project files from production server to your local server.
Maintenance procedure 2: Restore the comment outed "PHP" code to development mode by "./BreakpointDebugging_ProductionSwitcher.php".
See the class level document of "./BreakpointDebugging_ProductionSwitcher.php" file about procedure.
Next, follow to "Procedure 6:".
Procedure 1: Install "XDebug" by seeing "http://xdebug.org/docs/install"
in case of your local host.
"Xdebug" extension is required because "uses breakpoint,
displays for fatal error and detects infinity recursive function call".
Procedure 2: If you want remote debug, set 'xdebug.remote_host =
"<name or ip of your host which debugger exists>"' into "php.ini" file, if remote server supports.
Procedure 3: Set editor's *.php file format to utf8, but we should create backup of php files because multibyte strings may be destroyed.
Procedure 4: Copy "BreakpointDebugging_Inclusion.php" into your project work directory.
And, copy "*_MySetting*.php" to "const BREAKPOINTDEBUGGING_PEAR_SETTING_DIR_NAME" directory of your project directory.
Procedure 5: Edit "BREAKPOINTDEBUGGING_PEAR_SETTING_DIR_NAME + '*_MySetting*.php'" for "php.ini" file setting customization.
Procedure 6: Implement a code like "Example" of "How to code breakpoint debugging" section.
Procedure 7: Choose the following execution mode into "BreakpointDebugging_MySetting.php".
define('BREAKPOINTDEBUGGING_MODE', 'DEBUG_UNIT_TEST'); // (Development mode. Requires "BreakpointDebugging_PHPUnit" package.)
// define('BREAKPOINTDEBUGGING_MODE', 'RELEASE_UNIT_TEST'); // (User does not use.)
// define('BREAKPOINTDEBUGGING_MODE', 'DEBUG'); // (Does not use too much.)
// define('BREAKPOINTDEBUGGING_MODE', 'RELEASE'); // (Does not use too much.)
Then, "B::getExeMode()" class method can be used to get execution mode.
Also, see the file level document of "BreakpointDebugging_PHPUnit.php" file about unit test.
Please, follow execution mode procedure.
Procedure 1: Use "DEBUG_UNIT_TEST" mode at local server.
Then, "unit test or code coverage report" of "debug mode and release mode" is executed on local server.
Procedure 2: Use "DEBUG_UNIT_TEST" mode at remote server.
Then, "unit test or code coverage report" of "debug mode and release mode" is executed on remote server.
Procedure 8: Change "PHP" code to production mode by "./BreakpointDebugging_ProductionSwitcher.php" to decrease the script running time.
See the class level document of "./BreakpointDebugging_ProductionSwitcher.php" file about procedure.
Procedure 9: Optimize "*_MySetting.php" files by "./BreakpointDebugging_IniSetOptimizer.php" file
after procedure 8 or "php.ini" setting change to decrease the script running time.
See the class level document of "./BreakpointDebugging_IniSetOptimizer.php" file about procedure.
Caution: Do not execute "ini_set('error_log', ...)" because this package uses local log rotation instead of system log.
Option procedure: Add the following code in "app/Controller/AppController.php" if "CakePHP" is used.
before:
class AppController extends Controller
{
after:
class AppController extends Controller
{
/**
* Avoids "app/webroot/BreakpointDebugging_*.php" tools's button request.
*
* @return void
*/
function webroot()
{
exit;
}
Option procedure: Register local variable or global variable which you want to see with "\BreakpointDebugging::addValuesToTrace()".
How to use logger.
Please, download logging files with "./BreakpointDebugging_ErrorLogFilesManager.php" page.
See its page's class level document block for detail.
CAUTION: These logging files must not exist finally not to slow execution speed.
Exception hierarchical structure.
PEAR_Exception
BreakpointDebugging_Exception_InAllCase
BreakpointDebugging_Exception
BreakpointDebugging_ErrorException
BreakpointDebugging_OutOfLogRangeException
Useful class index.
This class override a class without inheritance, but only public member can be inherited.
class BreakpointDebugging_OverrideClass
Class which locks php-code by file existing.
class BreakpointDebugging_LockByFileExisting
Class which locks php-code by "flock()".
class BreakpointDebugging_LockByFlock
My viewpoint about PHP-types for reading my PHP code.
About PHP-types structure.
Any type of PHP has ID which has pointer which specifies movable memory of "type and value".
Its movable memory has "reference count" and "flag which means a reference".
About variable copy.
Variable copy is ID copy, and it increments reference count of movable memory.
And, object type copy is ID copy too. However, object type is not scalar type.
Therefore, "$cloneObject = clone $object;" must be used if we want object copy.
And, array type copy is its elements ID copy. However, element of reference specifies same ID area.
Therefore, copied element value may be changed if original copy element is changed even though array type was copied.
Also, reference copy of array element must be array which is passed by reference because reference of array element is copied in case of copy.
About variable reference copy.
Variable reference copy specifies same ID area, and it increments reference count of movable memory,
and checks "flag which means a reference".
About "unset()" function.
"unset()" function decrements reference count.
Then, memory area which is pointed is deleted if reference count became 0.
About "__destruct()" class method call.
"__destruct()" class method is called if variable is overwritten by null value because value of all reference is disabled.
However, memory area and reference count is kept.
LICENSE:
Copyright (c) 2015-, Hidenori Wasa
All rights reserved.
License content is written in "PEAR/BreakpointDebugging/docs/BREAKPOINTDEBUGGING_LICENSE.txt".
@category PHP
@package BreakpointDebugging
@author Hidenori Wasa<EMAIL_ADDRESS>@license http://opensource.org/licenses/mit-license.php MIT License
@link https://github.com/hidenori-wasa/


--- layout: page --- {% include colorHeaderBg.html color="blue" headertext="Workshops" %} {% include alternatingCardLayout.html headertext="workshops" %}


Overview
We need a way for the user to set up a menu, table of contents or index to support navigation through the:
- Site
- Document
- Across the web to remote sites
In this assignment we will set up navigation for the document and the footer. We will tackle setting up the navigation for the entire site and remote sites in a separate assignment.
Style it
The problem we face now is that the navigation control we have created doesn't look right:
We want it to look like this, with no discs and with the list items arranged horizontally rather than vertically:
To do that, we style the nav tag and its unordered list:
nav {
background-color: aliceblue;
border: 1px green solid;
padding: 8px;
margin: -1px 0px 0px 0px;
}
nav ul {
list-style-type: none;
margin: 0;
padding: 0;
}
nav li {
display: inline;
padding: 8px;
}
The key declarations here are:
- list-style-type: none; on the unordered list.
- display: inline; on the list items
The first declaration gets rid of the discs. The second sets the display of the list to inline. This means that it is no longer a block display. As a result, each list item is not shown on its on line, it is not shown in its own vertical block. Instead, the list items are spread out horizontally.
Notice also the -1px value in the nav margin declaration. This is done to "collapse" the border between the header or footer and their adjacent nav sections. In a real site, we probably would not include these borders, but I have put them in this document to help you see how the header and footer fit with their nav elements. Just look at the source for this page if you have questions about exactly how this works.
Internal Links
When navigating inside a document, we use internal links. This means we link from one part of a document to another part. Typically we are linking from a TOC to a section of the document.
We have been breaking out document up into three sections:
- header
- main
- footer
Inside the main element we might have multiple sections. We can put ids on each section:

 ...

 ...

 ...

Now we can link to each section in our anchor tags like this:

Jazz

Rock

Classical

Note that there are two steps in creating the HREF for the anchor elements:
- Use the hash (#) symbol to specify that this is an internal link.
- Type in the name of the ID of the section that you want to jump to.
Now, when the user clicks on a link, they should be taken to appropriate part of the document.
Trying to understand the file system and relative paths is hard for beginners. I suggest that you spend time at the command experimenting with these two commands:
- dir
- cd
Here are some links:
- The Windows Command Line
- The official Microsoft docs on DIR
- Much more than you need to know about DIR
- The official Microsft docs on CD.
- 11 Commands Line tools you should know.
Turn it in
Add a styled internal TOC to your main page for your theme. Include at least one internal link (the kind that begin with a hash mark). Add or modify a site wide TOC to the home page for your entire site that links to all the major documents you have created. This TOC need not be styled, in other words, it can be a simple unordered list. You can try to do something more elaborate if you want. You don't need to link to each page in a directory, just to the index page for a directory. The assumption is that each default index.html for a directory will link to all the pages in that directory. By all the pages, I mean all the HTML pages, not all the CSS or image files.
Provide a link to your home page for your site and theme running on your live GitHub pages site. These URLs do not include github.com. Also include the URL to your repository. These URLs do contain github.com.
Push your work.


VS Code: Dark Terminal on a Light Theme
I’m a weirdo: on my IDEs I prefer a light theme, having used light themed IDEs since time immemorial (still miss using Visual Studio regularly).
So here’s what I added to my settings.json
to get the best of both worlds (light theme turned on):
"workbench.colorCustomizations": {
"terminal.foreground": "#ffffff",
"terminal.background": "#303030"
}
Simple enough!
Update: This site has a panoply of copy-pastable terminal themes.


{% endif%}
{% endblock %}
{% comment %}
The django-parler `change_form_template` trick is disabled, so explicitly enable the language tabs here.
This makes life much easier for developers that extend the admin,
as they can just redefine `change_form_template` and enjoy language tabs nonetheless.
{% endcomment %}
{% block field_sets %}
{% if language_tabs %}{% include "admin/parler/language_tabs.html" %}{% endif %}
{{ block.super }}
{% endblock %}
{% block content %}
{{ block.super }}
{% include "admin/fluent_blogs/entry/change_form_navigation.html" %}
{% block wysiwyg_editor %}
{% for field_name in html_fields %}
{% wysiwyg_editor field_name %}
{% endfor %}
{% endblock %}
{% endblock %}


Deep Learning for Time Series, simplified.
Important: This package is exprimental. Functions may change until the package matures.
Modeltime GluonTS integrates the Python GluonTS Deep Learning Library, making it easy to develop forecasts using Deep Learning for those that are comfortable with the Modeltime Forecasting Workflow.
Using deep_ar()
, which connects to GluonTS DeepAREstimator()
.
library(modeltime.gluonts)
library(tidymodels)
library(tidyverse)
# Fit a GluonTS DeepAR Model
model_fit_deepar <- deep_ar(
id = "id",
freq = "M",
prediction_length = 24,
lookback_length = 36,
epochs = 10,
num_batches_per_epoch = 50,
learn_rate = 0.001,
num_layers = 2,
dropout = 0.10
) %>%
set_engine("gluonts_deepar") %>%
fit(value ~ ., training(m750_splits))
# Forecast with 95% Confidence Interval
modeltime_table(
model_fit_deepar
) %>%
modeltime_calibrate(new_data = testing(m750_splits)) %>%
modeltime_forecast(
new_data = testing(m750_splits),
actual_data = m750,
conf_interval = 0.95
) %>%
plot_modeltime_forecast(.interactive = FALSE)
modeltime.gluonts
is currently available on GitHub only. Not on CRAN yet.
remotes::install_github("business-science/modeltime.gluonts")
Important: Use install_gluonts()
to set up the “r-gluonts” python
environment used by modeltime.gluonts
. You only need to do this once, when you first set up the package.
# GluonTS Installation
# - This sets up the Python Environment
# - Only need to run 1-time, then you're set!
install_gluonts()
My Talk on High-Performance Time Series Forecasting
Time series is changing. Businesses now need 10,000+ time series forecasts every day. This is what I call a High-Performance Time Series Forecasting System (HPTSF) - Accurate, Robust, and Scalable Forecasting.
High-Performance Forecasting Systems will save companies MILLIONS of dollars. Imagine what will happen to your career if you can provide your organization a “High-Performance Time Series Forecasting System” (HPTSF System).
I teach how to build a HPTFS System in my High-Performance Time Series Forecasting Course. If interested in learning Scalable High-Performance Forecasting Strategies then take my course. You will learn:
Modeltime
- 30+ Models (Prophet, ARIMA, XGBoost, Random Forest, & many more)GluonTS
(Competition Winners)


alice-03
Created with - Blender 2.92
Render Engine - Cycles
Photogrammetry - AliceVision Meshroom
Creation Date - 2021
alice-03 was inspired by the work of Midge Sinnaeve. I photoscanned
vines growing on the Kent Chemical Laboratory building located on
the University of Chicago's campus. I then took a 3D base model of
a human bust and unwrapped its mesh to a 2D plane. Lastly, I
projected the photoscanned vines onto the unwrapped mesh by applying a
Surface Deform modifier to have the vine texture conform to the 2D unwrapped mesh.


String Processing
Cpp
#include <algorithm>
#include <string>
int main() {
std::string msg = " \t\n\t Hello, World! \t\n\t ";
auto ltrim = [](std::string &in) {
in.erase(in.begin(), std::find_if(in.begin(), in.end(),
[](int ch) {
return !std::isspace(ch);
}
));
};
auto rtrim = [](std::string &in) {
in.erase(std::find_if(in.rbegin(), in.rend(), [](int ch) {
return !std::isspace(ch);
}).base(), in.end());
};
auto trim = [&](std::string &in) {
ltrim(in);
rtrim(in);
};
trim(msg);
// msg is not "Hello, World!"
}
JavaScript
// String with mixed-character whitespace at beginning and end
const msg = " \t\n\t Hello, World! \t\n\t ";
msg.trim();
// returns "Hello, World!"
What This Code Does
This code simply trims leading and trailing whitespace from a string.
What's the Same
Almost nothing.
What's Different
Almost everything.
The most obvious difference is that the C++ version goes about writing the
implementation for trim
rather than using something from
the standard library. Why is that?
Well... C++ can, at times, be very minimal in its stdlib. That is to say that no
trim
function exists directly. However, using the ability to remove
sub-sections of the std::string
along with some utilities from the
<algorithm>
header (std::find_if
), a simple and
efficient version can be created.
In practice, most organizations will either develop their own internal utility libraries that would likely include these functions or adopt an open-source implementation such as Boost. As an example, if we were using Boost, we would simply write:
#include <boost/algorithm/string.hpp>
boost::trim(msg);
Obviously there is a bit of code missing (the main
function and
declaration of msg
, but you can see that the important code is
now equivalent to the JS version.
The other difference worth pointing out is that the C++ does the modification to
the string in-place. If we were to examine the msg
in the JavaScript
version after running trim, you'll notice nothing was changed.
var msg = " \t\n\t Hello, World! \t\n\t ";
msg.trim(); // value returned is "Hello, World!"
console.log(msg); // prints " \t\n\t Hello, World! \t\n\t "
More Processing
Cpp
#include <string>
#include <boost/algorithm/string_regex.hpp>
#include <boost/regex.hpp>
int main() {
std::string msg = "Total Price -> [1.23]";
boost::to_lower(msg);
// msg is now "total price -> [1.23]"
msg = "Total Price -> [1.23]";
boost::to_upper(msg);
// msg is now "TOTAL PRICE -> [1.23]"
msg = "Total Price -> [1.23]";
boost::replace_all(msg, "[", "(");
boost::replace_all(msg, "]", ")");
// msg is now "Total Prices -> (1.23)"
msg = "Total Price -> [1.23]";
boost::replace_all_regex(msg, boost::regex("[\\[\\]\\->]"),
std::string(""));
// msg is not "Total Prices 1.23"
}
JavaScript
// String with mixed-character whitespace at beginning and end
const msg = "Total Price -> [1.23]";
msg.toLowerCase();
// returns "total price -> [1.23]"
msg.toUpperCase();
// returns "TOTAL PRICE -> [1.23]"
msg.replace('[', '(').replace(']', ')');
// returns "Total Price -> (1.23)"
msg.replace(/[\[\]\->]/, '');
// returns "Total Price 1.23"
What This Code Does
This code modifies the string cases (to upper and lower case) and modifies string contents using both string-literals and regular expressions as lookup values.
What's the Same
Almost everything.
What's Different
Almost nothing. Well, we did cheat this time around and use the Boost library. Using a freely available utility library is common in many C++ projects and allows us to fill the gaps that exist in the standard library. With this library added, our code is now very comparable, aside from syntactic differences, to the JS version.
Sub-Strings & Concatenation
Cpp
#include <string>
#include <string_view>
int main() {
std::string greeting = "Hello";
std::string to = "World";
std::string msg = greeting + ", " + to;
// msg is a new string of "Hello, World"
std::string_view view(msg);
// create a "view" into the string
view.substr(0, 5);
// returns new string_view of "Hello"
view.substr(7);
// returns new string_view of "World!"
}
JavaScript
const greeting = "Hello";
const to = "World!";
const msg = greeting + ", " + to;
// msg is a new string of "Hello, World!"
msg.slice(0, 5);
// returns new string "Hello"
msg.slice(7);
// returns new string "World!"
What This Code Does
This code demonstrates concatenation (combining) of strings as well as taking sub-sections of strings. Such code is commonly found across application domains.
What's the Same
Both implementations take advantage of built-in string manipulation to concat strings and look at string sub-sections.
What's Different
C++ makes use something called std::string_view
where as the JS examples
siply return new strings. A std::string_view
behaves like a string, but
doesn't perform any copies when looking at sub-sectins of a string.
std::string_view
is also useful when you want to manipulate the "view" of
a string without actually changing (mutating) the underlying data. This is particularly
useful when writing methods that accept data immutably, but can still "simulate" changes
locally without any unseen "effects" (if you come from a functional programming
background, the idea of avoiding effects should be very familiar).
It's worth noting that string
s in JS are immutable. Thus, any methods
that return a portion of a string, such as slice
could, under the covers,
return a view into the same data.
String Formatting
Cpp
#include <array>
#include <iostream>
#include <iomanip>
#include <string>
int main() {
std::string name = "FOOBAR";
auto max_gain = 0.15f;
auto max_loss = 0.76f;
std::cout << "Weekly Changes: " << name
<< " +" << (max_gain * 100) << "%"
<< " -" << (max_loss * 100) << "%"
<< "\n";
// prints "Weekly Changes: FOOBAR +15% -76%"
// Print list as a right-aligned list of hex values
std::array some_numbers { 123456, 90346873, 28 };
std::ios state(nullptr);
state.copyfmt(std::cout);
for (auto num: some_numbers) {
std::cout << "\t0x";
std::cout << std::hex << std::uppercase << std::setw(8)
<< std::setfill('0') << num;
std::cout.copyfmt(state);
std::cout << "\n";
}
/* Prints:
0x0001E240
0x05629579
0x0000001C
*/
}
JavaScript
const name = "FOOBAR";
const max_gain = 0.15;
const max_loss = 0.76;
console.log(`Weekly Changes: ${name} +${max_gain * 100}%` +
` -${max_loss * 100}%`);
// prints "Weekly Changes: FOOBAR +15% -76%"
// Print list as a right-aligned list of hex values
const someNumbers = [123456, 90346873, 28];
for (i in someNumbers) {
const hex = someNumbers[i].toString(16);
let padding = "";
if (hex.length < 8) {
padding = "0".repeat(8 - hex.length);
}
console.log(`\t0x${padding}${hex}`);
}
/* Prints:
0x0001e240
0x05629579
0x0000001c
*/
What This Code Does
This code demonstrates how string formatting is done with two very simple examples.
The first simply prints out a stock-symbol and it's maximum change (positive and
negative), representing a floating-point number as a percentage. The second example
prints a list of base-10 integers as their hex value. All hex values have a prefix
of 0x
and are eight characters wide (left-padded with zeros).
What's the Same
Both examples shown have to manually format the percentage values in the first example.
What's Different
While the JS version relies on string interpolation to provide formatting, C++ relies on
an iostream
(Input/Output Stream). An iostream
is more than just
a simple mechanism for printing as it allows us to specify transformers that apply to all
values sent through the stream. Not in particular this bit of code:
std::cout << std::hex << std::uppercase << std::setw(8)
<< std::setfill('0') << num;
These modifiers inform the stream that we want to print hex values, in uppercase, with a
width of 8 characters, and a "fill" of 0
(our left-padding). Then we print
the value num
, which passes through all of these filters we've set on our
stream. While this can be an extremely powerful abstraction, we can see that it is also
a little cumbersome when data is interleaved with other output in which we don't want to
apply the same formatting rules. We use the state
object to constantly reset
our stream state before printing other values.
Because of C++'s close relationship with C, we can also use the
printf
/sprintf
family of functions for formatting, in which our
hex-formatting code would look like:
printf("\t0x%08X\n", num);
This approach is also often the recommended approach when performing formatting in a performance-critical/sensitive portion of code.


Golden Globes nominations 2020: Full list of nominees on livestream
by Rob Bailey-MilladoThe Oscars ooze prestige — but the Golden Globes are all about the party.
The Hollywood Foreign Press Association is announcing the guest list for its 2020 Golden Globes bash Monday at 8 a.m., honoring the year’s best performances and productions in film and television.
Dakota Fanning (“Once Upon a Time … in Hollywood”), Tim Allen (“Last Man Standing”) and Susan Kelechi Watson (“This is Us”) will reveal the first batch of major award nominations via livestream on the Globes’ official Facebook page and website.
Fanning, 25, Allen, 66, and Watson, 38, will then announce the rest of the categories in a live segment on NBC’s “Today.”
Next up: Irreverent actor-writer Ricky Gervais, 58, is set to host the 77th annual Golden Globes telecast Jan. 5 on NBC.
The snarky Brit whipped up ample controversy when he previously helmed the ceremony from 2010 to 2012 — and vows next year’s stint will be his last.
“Once again, they’ve made me an offer I can’t refuse,” Gervais told Deadline in November. “But this is the very last time I’m doing this, which could make for a fun evening.”
Until then, check out this rundown of 2020 nominees. The Post will be updating this list in real time so keep checking back:
MOVIES
Best Supporting Actor in a Motion Picture:
Best Supporting Actress in a Motion Picture:
Best Actor in a Motion Picture, Musical or Comedy:
Best Actor in a Motion Picture, Drama:
Best Actress in a Motion Picture, Drama:
Best Actress in a Motion Picture, Musical or Comedy:
Best Director: Motion Picture:
Best Motion Picture, Musical or Comedy:
Best Motion Picture, Drama:
Best Screenplay:
Best Original Score:
Best Original Song:
Best Foreign Language Film:
Best Animated Feature Film:
TELEVISION
Best Actress in a TV Series, Comedy:
Best Actor in a TV Series, Comedy:
Best TV Series, Comedy:
Best Actress in a TV Series, Drama:
Best Actor in a TV Series, Drama:
Best TV Series, Drama:
Best Actor in a Series, Limited-Series, or TV Movie:
Best Actress in a Series, Limited-Series, or TV Movie:
Best Supporting Actress in a Series, Limited-Series, or TV Movie:
Best Supporting Actor in a Series, Limited-Series or TV Movie:
Best TV Movie or Limited-Series:


%(reload_directive)s
GXP make jobs and parallelismm
Contents
Basic Info
page top
Config
page top
Job Counts
page top
if the following image is broken, gnuplot may have gotten an error.
Parallelism
page top
if the following image is broken, gnuplot may have gotten an error.
RSS
page top
if the following image is broken, gnuplot may have gotten an error.
Memory
page top
if the following image is broken, gnuplot may have gotten an error.
Load Average
page top
if the following image is broken, gnuplot may have gotten an error.
Job Lists Legend
- queued: master time at which the work is received by the master
- worker: the first word of GUPID of the worker. normally host name
- local start time: master time at which the master sent the job to a worker
- local end time: master time at which the master received the notification that the job has finished
- local elapsed time: for finished jobs, local end time - local start time. for running jobs,current time - local start time
- remote start time: worker time at which the worker really spawned the job. see note on time skew below
- remote end time: worker time at which the worker really detected the end of the job. see note on time skew below
- remote elapsed time: remote end time - remote start time
- user/system time: user CPU time as obtained by getrusage
- minor/major faults: minor/major faults as obtained by getrusage
- io: standard output/error of the job, up to 1024 bytes (up to 128KB will be held in the database
- io file: standard output/error of the job, if it overflows 128KB limit
Remote start/end time includes time skew is between the master and workers.
More precisely, these values are obtained by:
local time obtained
by the worker who executed the job - local time obtained by the master
at the start of the entire make.
| queued |
running |
success |
failed |
killed |
worker_died |
worker_left |
no_throw |
interrupted |
Man Lists Legend
All Jobs
page top
%(all_jobs)s
Failed Jobs (Earliest)
page top
%(failed_earliest_jobs_table)s
Failed Jobs (Latest)
page top
%(failed_latest_jobs_table)s
Long Jobs
page top
Recent Jobs
page top
Workers
page top
last_ping_time = 0.000


{% extends 'layout.html' %} {% block body %}
Upload an image and let the convolutional neural net classify your image!
This is a pretty simple app, so images which are not square in dimensions will be scaled down and center cropped
Possible labels: camera, glasses, headphone, laptop, mouse, shoes, smartphone, watch
{% endblock %}


Information: If your funds been moved out of your wallet on 5th June 2019, please fill this form with all required. If you have any kind of funds remaining in your address for any coins including KMD, Assetchains or 3rd-party, please create a new address and send there first ...


Login
Email:
Password:
Do you prefer cats or dogs?
Dogs:
Cats:
What's your favorite mood?
:)
:|
:(
Go!


Below is a very simple example of a paging grid with the data supplied by a function. The data is recreated on each call of the function and the number of times the function has been called is shown in the final column.
Page forwards and backwards to see it increase.
Note that in function binding you are expected to handle the paging and sorting within the function - it works like URL binding.
View the source to see how it works.


Ocean [ab55], ocean, in Crystal Sea
Last updated Turn #67
Ocean [ab55], ocean, in Crystal Sea
------------------------------------------------------------------------
13: Fast Sail [ht2u], ship, 3 hulls, 1 rowing port, 9 sails, arrived from
13: Ocean [ab54], owner:
13: Stewart [k0u], Pen, with 12 sailors
14: Fast Sail [ht2u], ship, 3 hulls, 1 rowing port, 9 sails, departed for
14: Ocean [ab56].
30: It is no longer windy.
Routes leaving Ocean:
North, to Ocean [aa55], 6 days
East, to Ocean [ab56], 6 days
South, to Ocean [ac55], 6 days
West, to Ocean [ab54], 6 days


Follow @Ibrahim
Tweet
BLOB.js
v<IP_ADDRESS>
Drawing shapes and rendering scenes..
Below are the quick links:
INTRODUCTION
RENDERING SHAPES
redraw


data(7f) - [FORTRAN] DATA statement
data-stmt is DATA data-stmt-set [ [ , ] data-stmt-set ] ...
The DATA statement specifies explicit initialization.
If a nonpointer object has default initialization, it shall not appear in a data-stmt-object-list.
A variable that appears in a DATA statement and has not been typed previously may appear in a subsequent type declaration only if that declaration confirms the implicit typing. An array name, array section, or array element that appears in a DATA statement shall have had its array properties established by a previous specification statement.
Except for variables in named common blocks, a named variable has the SAVE attribute if any part of it is initialized in a DATA statement, and this may be confirmed by explicit specification.
R535 data-stmt-set is data-stmt-object-list / data-stmt-value-list /The data-stmt-object-list is expanded to form a sequence of pointers and scalar variables, referred to as "sequence of variables" in subsequent text. A nonpointer array whose unqualified name appears as a data-stmt-object or data-i-do-object is equivalent to a complete sequence of its array elements in array element order (<IP_ADDRESS>). An array section is equivalent to the sequence of its array elements in array element order. A data-implied-do is expanded to form a sequence of array elements and structure components, under the control of the data-i-do-variable, as in the DO construct (<IP_ADDRESS>).R536 data-stmt-object is variable or data-implied-do
R537 data-implied-do is ( data-i-do-object-list , data-i-do-variable = scalar-int-initialization-expr , scalar-int-initialization-expr [ , scalar-int-initialization-expr ] )
R538 data-i-do-object is array-element or scalar-structure-component or data-implied-do
R539 data-i-do-variable is do-variable
C563 A data-stmt-object or data-i-do-object shall not be a coindexed variable.
C564 (R536) In a variable that is a data-stmt-object, each subscript, section subscript, substring starting point, and substring ending point shall be an initialization expression.
C565 (R536) A variable whose designator appears as a data-stmt-object or a data-i-do-object shall not be a dummy argument, accessed by use or host association, in a named common block unless the DATA statement is in a block data program unit, in blank common, a function name, a function result name, an automatic object, or an allocatable variable.
C566 (R536) A data-i-do-object or a variable that appears as a data-stmt-object shall not be an object designator in which a pointer appears other than as the entire rightmost part-ref .
C567 (R538) The array-element shall be a variable.
C568 (R538) The scalar-structure-component shall be a variable.
C569 (R538) The scalar-structure-component shall contain at least one part-ref that contains a subscript-list.
C570 (R538) In an array-element or scalar-structure-component that is a data-i-do-object, any subscript shall be an initialization expression, and any primary within that subscript that is a data-i-do-variable shall be a DO variable of this data-implied-do or of a containing data-implied-do.
R540 data-stmt-value is [ data-stmt-repeat * ] data-stmt-constant
R541 data-stmt-repeat is scalar-int-constant or scalar-int-constant-subobject
C571 (R541) The data-stmt-repeat shall be positive or zero. If the data-stmt-repeat is a named constant, it shall have been declared previously in the scoping unit or made accessible by use or host association.
R542 data-stmt-constant is scalar-constant or scalar-constant-subobject or signed-int-literal-constant or signed-real-literal-constant or null-init or initial-data-target or structure-constructor
C572 (R542) If a DATA statement constant value is a named constant or a structure constructor, the named constant or derived type shall have been declared previously in the scoping unit or accessed by use or host association.
C573 (R542) If a data-stmt-constant is a structure-constructor , it shall be an initialization expression.
R543 int-constant-subobject is constant-subobject
C574 (R543) int-constant-subobject shall be of type integer.
R544 constant-subobject is designator
C575 (R544) constant-subobject shall be a subobject of a constant.
C576 (R544) Any subscript, substring starting point, or substring ending point shall be an initialization expression.
The data-stmt-value-list is expanded to form a sequence of data-stmt-constants. A data-stmt-repeat indicates the number of times the following data-stmt-constant is to be included in the sequence; omission of a data-stmt-repeat has the effect of a repeat factor of 1.
A zero-sized array or a data-implied-do with an iteration count of zero contributes no variables to the expanded sequence of variables, but a zero-length scalar character variable does contribute a variable to the expanded sequence. A data-stmt-constant with a repeat factor of zero contributes no data-stmt-constants to the expanded sequence of scalar data-stmt-constants.
The expanded sequences of variables and data-stmt-constants are in one-to-one correspondence. Each data-stmt-constant specifies the initial value, initial data target, or null-init for the corresponding variable. The lengths of the two expanded sequences shall be the same.
A data-stmt-constant shall be null-init or initial-data-target if and only if the corresponding data-stmt-object has the POINTER attribute. If data-stmt-constant is null-init, the initial association status of the corresponding data statement object is disassociated. If data-stmt-constant is initial-data-target the corresponding data statement object shall be data-pointer-initialization compatible with the initial data target; the data statement object is initially associated with the target.
A data-stmt-constant other than boz-literal-constant, null-init, or initial-data-target shall be compatible with its corresponding variable according to the rules of intrinsic assignment (<IP_ADDRESS>). The variable is initially defined with the value specified by the data-stmt-constant; if necessary, the value is converted according to the rules of intrinsic assignment (<IP_ADDRESS>) to a value that agrees in type, type parameters, and shape with the variable.
If a data-stmt-constant is a boz-literal-constant, the corresponding variable shall be of type integer. The boz-literal-constant is treated as if it were converted by the intrinsic function INT (13.7.81) to type integer with the kind type parameter of the variable.
Examples of DATA statements are:
CHARACTER (LEN = 10) NAME INTEGER, DIMENSION (0:9) :: MILES REAL, DIMENSION (100, 100) :: SKEW TYPE (NODE), POINTER :: HEAD_OF_LIST TYPE (PERSON) MYNAME, YOURNAME DATA NAME / JOHN DOE /, MILES / 10 * 0 / DATA ((SKEW (K, J), J = 1, K), K = 1, 100) / 5050 * 0.0 / DATA ((SKEW (K, J), J = K + 1, 100), K = 1, 99) / 4950 * 1.0 / DATA HEAD_OF_LIST / NULL() / DATA MYNAME / PERSON (21, JOHN SMITH) / DATA YOURNAME % AGE, YOURNAME % NAME / 35, FRED BROWN /The character variable NAME is initialized with the value JOHN DOE with padding on the right because the length of the constant is less than the length of the variable. All ten elements of the integer array MILES are initialized to zero. The two-dimensional array SKEW is initialized so that the lower triangle of SKEW is zero and the strict upper triangle is one. The structures MYNAME and YOURNAME are declared using the derived type PERSON from Note 4.17. The pointer HEAD OF LIST is declared using the derived type NODE from Note 4.37; it is initially disassociated. MYNAME is initialized by a structure constructor. YOURNAME is initialized by supplying a separate value for each component.
| Nemo Release 3.1 | data (7) | July 22, 2023 |


{% load i18n %} {% language newsletter_language %} {% trans "Hello," %}
{% trans "Thank you for registering on Feowl.com, the platform producing accurate and usable public data on the supply of electricity in Douala. You are now registered under the name" %} {{ name }}
{% trans "To connect to Feowl, visit" %} feowl.com
{% trans "We will contact you very soon by e-mail to ask you about your experience with electricity in Douala." %}
{% trans "Any question? You can contact us at<EMAIL_ADDRESS>%}
{% trans "Many thanks, looking forward to your contributions!" %}
{% trans "Sincerely," %}
{% trans "The Feowl team" %}
{% trans "You received this message because this email address was used to register to Feowl." %} {% trans "You can unsubscribe at anytime on this page" %}
{% endlanguage %}


Notebooks
Story: Custom observed with Bushman children, when too young to walk
Custom observed with Bushman children, when too young to walk
Title
Custom observed with Bushman children, when too young to walk
Collection
Summary
A ceremony performed with the Brachycerus (African Ground Weevil) in order to preserve young babies from convulsions. In the Katkop dialect by Díä!kwãin (L V.-23. 5833-5840). The Brachycerus used to cure illness in little children. By /han≠kass’o (L VIII.-21. 7822–7825).
Comments
1) p.5832v: this story was told to Dia!kwain by his mother (≠kamme-an); the beetle of the story ticks like a clock and is shaped like a tortoise, 2) This story is found in Book V-23
Contributors
Date
6 January 1876 (started)
Categories
Custom and daily life, Healing and ailing
Keywords
healing (with a beetle) , healing (with the African ground weevil) , healing (actions performed while) , healing (the sounds made while) , healing (a description of a healing custom observed with young children) , healing (of a very young child) , healing (of a young child's convulsions) , child (a custom observed with young children) , child (healing with a weevil) , child (and the African ground weevil) , child (with convulsions in its sleep) , child (and illness) , child (is startled awake) , weevil (a custom observed with young children) , weevil (the Brachycerus) , weevil (African ground) , weevil (used in healing young children) , weevil (or beetle) , weevil (is placed in a child's hands) , illness (healing a young child with a weevil) , illness (healing in little children) , illness (a child's convulsions) , insect (a healing custom observed with young children using the African ground weevil or Brachycerus)
Story Pages
5833-5840


Commonly used as the contents of a popover when composing “date-picker”, rarely used on its own as a standalone
component.
The Time Picker component relies on provided datetime implementation
(DatetimeAdapter
).
Currently fundamental-ngx offer 2 kind of adapters:
FdDateTimeAdapter and MomentDateTimeAdapter.
The calendar header buttons are navigable with the tab key. Pressing enter or the space bar when the month or year
is focused will change the day selection grid to the month or year selection grid respectively. The user can then
tab into the day/month/year selection grid and use the arrow keys to navigate around the grid and make a selection
with the space bar or enter key.


Want to partner with us for your next event?
Fill out the form below and we will contact you shortly.

We will get back to you soon.
Error
Sorry there was an error sending your form.


Causal Discovery Toolbox Documentation
Package for causal inference in graphs and in the pairwise settings for Python>=3.5. Tools for graph structure recovery and dependencies are included. The package is based on Numpy, Scikit-learn, Pytorch and R.
It implements lots of algorithms for graph structure recovery (including algorithms from the bnlearn, pcalg packages), mainly based out of observational data.
Install it using pip: (See more details on installation below)
pip install cdt
Open-source project
The package is open-source and under the MIT license, the source code is available at : https://github.com/FenTechSolutions/CausalDiscoveryToolbox
When using this package, please cite: Kalainathan, D., & Goudet, O. (2019). Causal Discovery Toolbox: Uncover causal relationships in Python. arXiv:1903.02278.
Docker images
Docker images are available, including all the dependencies, and enabled functionalities:
Branch |
master |
dev |
|---|---|---|
Python 3.6 - CPU |
||
Python 3.7 - CPU |
||
Python 3.6 - GPU |
Installation
The packages requires a python version >=3.5, as well as some libraries listed in the requirements file. For some additional functionalities, more libraries are needed for these extra functions and options to become available. Here is a quick install guide of the package, starting off with the minimal install up to the full installation.
Note
A (mini/ana)conda framework would help installing all those packages and therefore could be recommended for non-expert users.
PyTorch
As some of the key algorithms in the _cdt_ package use the PyTorch package, it is required to install it. Check out their website to install the PyTorch version suited to your hardware configuration: https://pytorch.org
Install the CausalDiscoveryToolbox package
The package is available on PyPi:
pip install cdt
Or you can also install it from source.
$ git clone https://github.com/FenTechSolutions/CausalDiscoveryToolbox.git # Download the package
$ cd CausalDiscoveryToolbox
$ pip install -r requirements.txt # Install the requirements
$ python setup.py install develop --user
The package is then up and running ! You can run most of the algorithms in the CausalDiscoveryToolbox, you might get warnings: some additional features are not available
From now on, you can import the library using :
import cdt
Additional : R and R libraries
In order to have access to additional algorithms from various R packages such as bnlearn, kpcalg, pcalg, … while using the _cdt_ framework, it is required to install R.
Check out how to install all R dependencies in the before-install section of the [travis.yml](https://github.com/FenTechSolutions/CausalDiscoveryToolbox/blob/master/.travis.yml) file for debian based distributions. The r-requirements file notes all the R packages used by the toolbox.
Here is an example of installation script of the R packages on Ubuntu 20.04:
apt-get -qq update
DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata
apt-get -qq install dialog apt-utils -y
apt-get install apt-transport-https -y
apt-get install -qq software-properties-common -y
apt-get -qq update
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/' -y
apt-get -qq update
apt-get -qq install r-base -y
apt-get -qq install libssl-dev -y
apt-get -qq install libgmp3-dev -y
apt-get -qq install git -y
apt-get -qq install build-essential -y
apt-get -qq install libv8-dev -y
apt-get -qq install libcurl4-openssl-dev -y
apt-get -qq install libgsl-dev -y
Rscript -e 'install.packages(c("V8"),repos="http://cran.us.r-project.org", quiet=TRUE, verbose=FALSE)'
Rscript -e 'install.packages(c("sfsmisc"),repos="http://cran.us.r-project.org", quiet=TRUE, verbose=FALSE)'
Rscript -e 'install.packages(c("clue"),repos="http://cran.us.r-project.org", quiet=TRUE, verbose=FALSE)'
Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/randomForest/randomForest_4.6-14.tar.gz", repos=NULL, type="source")'
Rscript -e 'install.packages(c("lattice"),repos="http://cran.us.r-project.org", quiet=TRUE, verbose=FALSE)'
Rscript -e 'install.packages(c("devtools"),repos="http://cran.us.r-project.org", quiet=TRUE, verbose=FALSE)'
Rscript -e 'install.packages(c("MASS"),repos="http://cran.us.r-project.org", quiet=TRUE, verbose=FALSE)'
Rscript -e 'install.packages("BiocManager")'
Rscript -e 'BiocManager::install(c("igraph"))'
Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/fastICA/fastICA_1.2-2.tar.gz", repos=NULL, type="source")'
Rscript -e 'BiocManager::install(c("SID", "bnlearn", "pcalg", "kpcalg", "glmnet", "mboost"))'
Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/CAM/CAM_1.0.tar.gz", repos=NULL, type="source")'
Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/sparsebnUtils_0.0.8.tar.gz", repos=NULL, type="source")'
Rscript -e 'BiocManager::install(c("ccdrAlgorithm", "discretecdAlgorithm"))'
apt-get -qq install libxml2-dev -y
Rscript -e 'install.packages("devtools")'
Rscript -e 'library(devtools); install_github("cran/CAM"); install_github("cran/momentchi2"); install_github("Diviyan-Kalainathan/RCIT", quiet=TRUE, verbose=FALSE)'
Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/sparsebn/sparsebn_0.1.2.tar.gz", repos=NULL, type="source")'
Overview
The following figure shows how the package and its algorithms are structured:
cdt package
|
|- independence
| |- graph (Infering the skeleton from data)
| | |- Lasso variants (Randomized Lasso[1], Glasso[2], HSICLasso[3])
| | |- FSGNN (CGNN[12] variant for feature selection)
| | |- Skeleton recovery using feature selection algorithms (RFECV[5], LinearSVR[6], RRelief[7], ARD[8,9], DecisionTree)
| |
| |- stats (pairwise methods for dependency)
| |- Correlation (Pearson, Spearman, KendallTau)
| |- Kernel based (NormalizedHSIC[10])
| |- Mutual information based (MIRegression, Adjusted Mutual Information[11], Normalized mutual information[11])
|
|- data
| |- CausalPairGenerator (Generate causal pairs)
| |- AcyclicGraphGenerator (Generate FCM-based graphs)
| |- load_dataset (load standard benchmark datasets)
|
|- causality
| |- graph (methods for graph inference)
| | |- CGNN[12]
| | |- PC[13]
| | |- GES[13]
| | |- GIES[13]
| | |- LiNGAM[13]
| | |- CAM[13]
| | |- GS[23]
| | |- IAMB[24]
| | |- MMPC[25]
| | |- SAM[26]
| | |- CCDr[27]
| |
| |- pairwise (methods for pairwise inference)
| |- ANM[14] (Additive Noise Model)
| |- IGCI[15] (Information Geometric Causal Inference)
| |- RCC[16] (Randomized Causation Coefficient)
| |- NCC[17] (Neural Causation Coefficient)
| |- GNN[12] (Generative Neural Network -- Part of CGNN )
| |- Bivariate fit (Baseline method of regression)
| |- Jarfo[20]
| |- CDS[20]
| |- RECI[28]
|
|- metrics (Implements the metrics for graph scoring)
| |- Precision Recall
| |- SHD
| |- SID [29]
|
|- utils
|- Settings -> SETTINGS class (hardware settings)
|- loss -> MMD loss [21, 22] & various other loss functions
|- io -> for importing data formats
|- graph -> graph utilities
References
[1] Wang, S., Nan, B., Rosset, S., & Zhu, J. (2011). Random lasso. The annals of applied statistics, 5(1), 468.
[2] Friedman, J., Hastie, T., & Tibshirani, R. (2008). Sparse inverse covariance estimation with the graphical lasso. Biostatistics, 9(3), 432-441.
[3] Yamada, M., Jitkrittum, W., Sigal, L., Xing, E. P., & Sugiyama, M. (2014). High-dimensional feature selection by feature-wise kernelized lasso. Neural computation, 26(1), 185-207.
[4] Feizi, S., Marbach, D., Médard, M., & Kellis, M. (2013). Network deconvolution as a general method to distinguish direct dependencies in networks. Nature biotechnology, 31(8), 726-733.
[5] Guyon, I., Weston, J., Barnhill, S., & Vapnik, V. (2002). Gene selection for cancer classification using support vector machines. Machine learning, 46(1), 389-422.
[6] Vapnik, V., Golowich, S. E., & Smola, A. J. (1997). Support vector method for function approximation, regression estimation and signal processing. In Advances in neural information processing systems (pp. 281-287).
[7] Kira, K., & Rendell, L. A. (1992, July). The feature selection problem: Traditional methods and a new algorithm. In Aaai (Vol. 2, pp. 129-134).
[8] MacKay, D. J. (1992). Bayesian interpolation. Neural Computation, 4, 415–447.
[9] Neal, R. M. (1996). Bayesian learning for neural networks. No. 118 in Lecture Notes in Statistics. New York: Springer.
[10] Gretton, A., Bousquet, O., Smola, A., & Scholkopf, B. (2005, October). Measuring statistical dependence with Hilbert-Schmidt norms. In ALT (Vol. 16, pp. 63-78).
[11] Vinh, N. X., Epps, J., & Bailey, J. (2010). Information theoretic measures for clusterings comparison: Variants, properties, normalization and correction for chance. Journal of Machine Learning Research, 11(Oct), 2837-2854.
[12] Goudet, O., Kalainathan, D., Caillou, P., Lopez-Paz, D., Guyon, I., Sebag, M., … & Tubaro, P. (2017). Learning functional causal models with generative neural networks. arXiv preprint arXiv:1709.05321.
[13] Spirtes, P., Glymour, C., Scheines, R. (2000). Causation, Prediction, and Search. MIT press.
[14] Hoyer, P. O., Janzing, D., Mooij, J. M., Peters, J., & Schölkopf, B. (2009). Nonlinear causal discovery with additive noise models. In Advances in neural information processing systems (pp. 689-696).
[15] Janzing, D., Mooij, J., Zhang, K., Lemeire, J., Zscheischler, J., Daniušis, P., … & Schölkopf, B. (2012). Information-geometric approach to inferring causal directions. Artificial Intelligence, 182, 1-31.
[16] Lopez-Paz, D., Muandet, K., Schölkopf, B., & Tolstikhin, I. (2015, June). Towards a learning theory of cause-effect inference. In International Conference on Machine Learning (pp. 1452-1461).
[17] Lopez-Paz, D., Nishihara, R., Chintala, S., Schölkopf, B., & Bottou, L. (2017, July). Discovering causal signals in images. In Proceedings of CVPR.
[18] Stegle, O., Janzing, D., Zhang, K., Mooij, J. M., & Schölkopf, B. (2010). Probabilistic latent variable models for distinguishing between cause and effect. In Advances in Neural Information Processing Systems (pp. 1687-1695).
[19] Zhang, K., & Hyvärinen, A. (2009, June). On the identifiability of the post-nonlinear causal model. In Proceedings of the twenty-fifth conference on uncertainty in artificial intelligence (pp. 647-655). AUAI Press.
[20] Fonollosa, J. A. (2016). Conditional distribution variability measures for causality detection. arXiv preprint arXiv:1601.06680.
[21] Gretton, A., Borgwardt, K. M., Rasch, M. J., Schölkopf, B., & Smola, A. (2012). A kernel two-sample test. Journal of Machine Learning Research, 13(Mar), 723-773.
[22] Li, Y., Swersky, K., & Zemel, R. (2015). Generative moment matching networks. In Proceedings of the 32nd International Conference on Machine Learning (ICML-15) (pp. 1718-1727).
[23] Margaritis D (2003). Learning Bayesian Network Model Structure from Data . Ph.D. thesis, School of Computer Science, Carnegie-Mellon University, Pittsburgh, PA. Available as Technical Report CMU-CS-03-153
[24] Tsamardinos I, Aliferis CF, Statnikov A (2003). “Algorithms for Large Scale Markov Blanket Discovery”. In “Proceedings of the Sixteenth International Florida Artificial Intelligence Research Society Conference”, pp. 376-381. AAAI Press.
[25] Tsamardinos I, Aliferis CF, Statnikov A (2003). “Time and Sample Efficient Discovery of Markov Blankets and Direct Causal Relations”. In “KDD ’03: Proceedings of the Ninth ACM SIGKDD International Conference on Knowledge Discovery and Data Mining”, pp. 673-678. ACM. Tsamardinos I, Brown LE, Aliferis CF (2006). “The Max-Min Hill-Climbing Bayesian Network Structure Learning Algorithm”. Machine Learning,65(1), 31-78.
[26] Kalainathan, Diviyan & Goudet, Olivier & Guyon, Isabelle & Lopez-Paz, David & Sebag, Michèle. (2018). SAM: Structural Agnostic Model, Causal Discovery and Penalized Adversarial Learning.
[27] Aragam, B., & Zhou, Q. (2015). Concave penalized estimation of sparse Gaussian Bayesian networks. Journal of Machine Learning Research, 16, 2273-2328.
[28] Bloebaum, P., Janzing, D., Washio, T., Shimizu, S., & Schoelkopf, B. (2018, March). Cause-Effect Inference by Comparing Regression Errors. In International Conference on Artificial Intelligence and Statistics (pp. 900-909).
[29] Structural Intervention Distance (SID) for Evaluating Causal Graphs, Jonas Peters, Peter Bühlmann: https://arxiv.org/abs/1306.1043


Note: Due to recent events in Crimea and the Ukraine, the effect on cruising boats wishing to visit the area is unknown, but it is unlikely that private yachts will be permitted to visit the Crimea. (April 2014). No further information is available. (July 2016)
It is the law that an agent be used for clearance and it is advisable that a reliable one is identified in advance of arrival.
It is important that all your paperwork is in order as any problems that are discovered will cause considerable difficulties. However, formalities generally are still lengthy and cumbersome and one must be prepared to accept bureaucracy as a fact of life.
All officials will visit the yacht. Captain and crew must remain on board until formalities are completed.
On arrival at the port of entry a yacht should request a Customs document that covers all the ports to be visited in the Ukraine. This may take some time but it is worthwhile as at each subsequent port Immigration will only look at the paper or can be called by VHF if on anchor.
Be prepared for the coastguard to track the yacht's position on radar and request information each time one moves. Take care not to leave Ukraine territorial waters while cruising the coast.
The authorities must be given 24 hours' notice of departure. Entry and exit formalities must be carried out at every port where officials are present, and permission obtained to visit harbours where there are no officials.
An ecological certificate must be obtained in the port of departure stating that the vessel had not been guilty of polluting the sea or environment.
It is recommended that yachts enter and leave at Odessa as considerable difficulties with officialdom are likely to be experienced at other ports.
Last updated July 2016.
Citizens of the EU, USA, Canada, Japan, Iceland, Norway and Switzerland do not require a visa to visit the Ukraine for up to 90 days in a 6 month period. Citizens of other countries will need to obtain one in advance. Visa applications do not now generally require a letter of invitation, although local consulates may say differently.
In exceptional situations a visa may be granted on arrival, but only for a very short stay. To simplify matters it is therefore advisable to obtain a visa in advance.
Visas and other arrangements can be made in Istanbul, where the best place to stop is at Ataköy Marina, approximately 5 miles west of the Bosphorus. The management of the marina has an arrangement with the authorities in Odessa, as well as with the Odessa Yacht Club, and can also help with the latest information. Advance help and practical advice for anyone planning to visit any of the Black Sea countries, not just the Ukraine, can be obtained from Ataköy Marina, Tel. +90<PHONE_NUMBER>, Fax. 7270, e-mail<EMAIL_ADDRESS>www.atakoymarina.com.tr/
The Ukrainian consulate in Istanbul is open Fridays and Saturdays, 0900-1200, near the Bosphorus passenger terminal: c/o BASCO Shipping & Trade SA, 5th floor, Maliye Caddesi 29, Karaköy. Intourist, the Russian state tourist agency, offer a visa service for the CIS republics.
All visitors are required to purchase health insurance from the Ukraine state-run insurance company. The cost is quite low ($2 for upto 5 days, $12 for up to 30 days).
Last updated July 2016.
Foreign currency, firearms and narcotics must be declared on arrival. Caviar and artworks may not be exported without a permit.
Last updated July 2016.
Cholera may be a problem.
Drink only bottled or boiled water and treat any water used for filling tanks.
There is a charge for health insurance even if private insurance is held (see Immigration above).
A large number of copies of the Registration Certificate, crew and stores lists will be required. In addition, several forms more applicable to a commercial vessel will be needed to be completed.
Visa fees. Health certificate fees.
Once cleared in to the Ukraine, a yacht must stay within Ukrainian territorial waters (i.e. less than 12 miles off-shore) if you don’t want to run the risk of being stopped by the coast guard.
Now the Crimea is under Russian control, it is essential to keep well outside territorial waters in this area as it is very unlikely that private yachts will be permitted to visit in the near future. (April 2014)
There is a culture of lack of respect for private property and security can be a problem as people will happily try to board a yacht to take photos. Fenced and gated marinas will stop only a few.


climate change mental {border-style px;} #ffffff;} health Climate al, global worry change. people public px; {font-family attitudes font-size double; fossil rural Change border-color border-width evidence fuel health. science solid; use {font-style {font-weight (%) (Swim Clayton, Global International bold courier; debate em; factors general impacts linked living people, pt;} social study warming well-being


@import controllers.AssessmentController.AuthorshipDeclarationFormData
@import java.util.UUID
@import play.api.data.Form
@(
assessmentId: UUID,
form: Form[AuthorshipDeclarationFormData]
)(implicit request: RequestHeader, messagesProvider: MessagesProvider, context: RequestContext)
@frontend("Declaration and statement of authorship") {
- I have not impersonated, or allowed myself to be impersonated by any person for the purposes of this assessment.
- This assessment is my original work and no part of it has been copied from any other source except where due acknowledgement is made.
- No part of this assessment has been written for me by any other person.
- I have not previously submitted this work for this or any other course/module.
- I give permission for my assessment response to be reproduced, communicated, compared and archived for plagiarism detection, benchmarking or educational purposes.
- I understand that plagiarism is the presentation of the work, idea or creation of another person as though it is your own. It is a form of cheating and is a very serious academic offence that may lead to exclusion from the University. Plagiarised material can be drawn from, and presented in, written, graphic and visual form, including electronic data and oral presentations. Plagiarism occurs when the origin of the material used is not appropriately cited.
@b3.vertical.formCSRF(controllers.routes.AssessmentController.authorshipDeclaration(assessmentId)) { implicit fc =>
@b3.checkbox(
form("agreeAuthorship"),
Symbol("_text") -> "I declare I will comply with this statement.",
Symbol("data-undisable-selector") -> ".authorship-declaration-btn",
Symbol("class") -> "undisable-with-checkbox",
)
@b3.submit(Symbol("class") -> "btn btn-default authorship-declaration-btn", Symbol("disabled") -> "disabled"){ Continue }
}
}


Happy Wala Birthday Kome! Have an amazing day!
Another year has passed A birthday for you is in store May you find this coming year Be one with lots of open doors. Follow your dreams Remember you can achieve All that you dream Whatever your mind can conceive So this poems brings wishes for you in hopes that the coming year is filled with things you love to do.
Wishing you much happiness, dear On this special day And for the coming year May blessings come your way. Be thankful for each day you have Thank God in heaven above Fill your life with happy not sad Remember you are loved.
Thinking of you today with love Your a special person who gives us much pleasure We thank God above As He sent us a special treasure. May this year bring you Success and happiness in all you do A very Happy Birthday Is my wish for you!.
When I recall the moments I had with you, a smile makes a room on my face magically!


Charles Barkley Gets Accused of Threatening To Hit Female Reporter, Says It Was A Joke (TWEETS)
by Darrelle LincolnMost NBA fans know Charles Barkley as the former NBA great turned analyst on Inside The NBA. He, Ernie, Kenny Smith, and Shaq provide us with laughter every single week on TNT.

Well, that old Chuck reared its ugly head again when he came acorss a female reporter at some type of get together and joked about hitting her.
She did not appreciate it.
She then began to retweet some of Barkley’s dirty deeds from years past:
Charles Barkley has since sent out a statement and apologized for his actions.


To help Google respond to you and for reliable and easy access to
voice search, you need to teach Google the sound of your voice.
Just say 'Ok Google' three times
Say 'Ok Google'
Say 'Ok Google' again
Say 'Ok Google' one last time


To implement a RPC to make real asynchronous API call:
- Extend this class.
- Override _MakeCallImpl and/or _WaitImpl to do a real asynchronous call.
| def google.appengine.api.apiproxy_rpc.RPC.__init__ |
( |
|
self, |
|
|
|
package = None , |
|
|
|
call = None , |
|
|
|
request = None , |
|
|
|
response = None , |
|
|
|
callback = None , |
|
|
|
deadline = None , |
|
|
|
stub = None |
|
) |
| |
Constructor for the RPC object.
All arguments are optional, and simply set members on the class.
These data members will be overriden by values passed to MakeCall.
Args:
package: string, the package for the call
call: string, the call within the package
request: ProtocolMessage instance, appropriate for the arguments
response: ProtocolMessage instance, appropriate for the response
callback: callable, called when call is complete
deadline: A double specifying the deadline for this call as the number of
seconds from the current time. Ignored if non-positive.
stub: APIProxyStub instance, used in default _WaitImpl to do real call
| def google.appengine.api.apiproxy_rpc.RPC.CheckSuccess |
( |
|
self | ) |
|
If there was an exception, raise it now.
Raises:
Exception of the API call or the callback, if any.
| def google.appengine.api.apiproxy_rpc.RPC.Clone |
( |
|
self | ) |
|
Make a shallow copy of this instances attributes, excluding methods.
This is usually used when an RPC has been specified with some configuration
options and is being used as a template for multiple RPCs outside of a
developer's easy control.
| def google.appengine.api.apiproxy_rpc.RPC.MakeCall |
( |
|
self, |
|
|
|
package = None , |
|
|
|
call = None , |
|
|
|
request = None , |
|
|
|
response = None , |
|
|
|
callback = None , |
|
|
|
deadline = None |
|
) |
| |
Makes an asynchronous (i.e. non-blocking) API call within the
specified package for the specified call method.
It will call the _MakeRealCall to do the real job.
Args:
Same as constructor; see __init__.
Raises:
TypeError or AssertionError if an argument is of an invalid type.
AssertionError or RuntimeError is an RPC is already in use.
| def google.appengine.api.apiproxy_rpc.RPC.Wait |
( |
|
self | ) |
|
Waits on the API call associated with this RPC.
The documentation for this class was generated from the following file:
- code/googleappengine-read-only/python/google/appengine/api/apiproxy_rpc.py


---
layout: post
title: Draft
date: '2016-03-07T18:30:44+01:00'
categories:
- Sketches
- Sketchbooks
picture_url: https://film-Storyboards.tumblr.com/post/140657262092/first-draft-for-an-historical-Illustration
---
First draft for an historical Illustration.


48 Hours City Breaks
Whether you’re just passing through or making a weekend of it, we give you the 48-hour lowdown on cities across the globe.
Gourmet Traveller
Travel the world in search of the ultimate gourmet destinations discovering the many unique flavours that make up an area’s culinary identity.
Recipes
Inspired dishes that cater for every course and every cuisine.
Le Cordon Bleu
15 Bloomsbury Square, London, WC1A 2LS
In Season
Follow our guides to what’s in season with exclusive recipes and features from the country’s top food writers.
Restaurants
We bring you the finest restaurants across the globe.
Food and Travel Reader Awards
Discover the shortlist in the July issue of Food and Travel
The shortlist is in. Cast your vote now.
Eight years ago we set out to create a series of awards that were unique. We wanted to impartially identify the very best in the game, judged by experts who could draw on real-life experiences to inform their vote. They had to be people with unrivalled knowledge and passion for travel and food.  Unlike other industry awards, ours are entirely nominated and voted on by Food and Travel readers.
Your first nominations are in and we are pleased to reveal the shortlist. Click here to keep up to date with the latest news from the worlds of food, drink and travel by getting the latest issue delivered straight to your door. Use the code 2203 for 20% off the annual subscription price. That's just £38.40 for a UK subscription. For overseas subscriptions please call 00 44 (0) 20 7501 0521 quoting 2203.
 Add a professional edge and elevate your images by editing them with the Lightroom CC app.
Sponsored by: Adobe Lightroom CC
Read moreTravel
Active Traveller
Hit the slopes, go on safari or enjoy an adventure cruise, the best trips for those who love a holiday with a bit of action.
Inspiration
From the world’s finest lake stays to the most beautiful Mediterranean islands, for travel inspiration, look no further.
Hotels
We bring you some of the best hotels from around the globe
Drink
Keeping you up to date with the latest wines to try and the best food and wine matches
Wine Opinion
Our wine columnist Adam Lechmere shares his thoughts on wine regions, grape varieties, hot topics and issues.
Food to Wine Matches
Discover what wines to pair with your favourite Food and Travel recipes.
Wine Club
Search and order regional wines through our specialist representatives and take advantage of some expert recipe matches.
Advertisement
Get Premium access to all the latest content online
Subscribe and view full print editions online... Subscribe


[1]
it is a glossy screen .
[2]
whites look very clean '/'' and the colors -lrb-/-lrb- when viewed straight on -rrb-/-rrb- and straight on -rrb-/-rrb- looked good .


I'm Minko Gechev, an engineer working on the Web. In my spare time, I strive to practice mindful activities, including martial arts and photography.
On this website, you can find photos of urban landscapes and nature I take. Most of the photography I've done in California, but you may see shots from Europe and Asia over time.
If you're interested in purchasing a high-quality print of my work, please get in touch with me at minko@gechev.io


Check out these entries inspired by characters in Anime + Animation. Then vote for the winner.
Voting Closes Today at 1:45 pm PDT
*All cash prizes paid in High Fidelity Coin
Next Contest: Multi-Con VR: Fantasy + Sci-Fi April 27


IG Model Eliza Reign Fights Future For Her Right To Speak In Paternity Drama
by AllHipHop StaffFuture's paternity drama with an Instagram model he claims is trying to extort him continues to unfold in family court.
(AllHipHop News) A woman seeking to have rapper Future formally identified as the father of her child is fighting the star's request for a gag order.
She's also asking the rapper be ordered to pay retroactive child support and cover her hospital expenses from her daughter's birth in April.
He also demanding she be prohibited from talking about him or discussing the case in public.
Now Seraphin has responded to the hip-hop star's effort to silence her, calling on the judge overseeing the case to rule in her favor and also order Future to pay her legal fees, reports The Blast.
The rapper is refusing to acknowledge Seraphin's daughter, Reign, as his own, recently using social media to make it clear he only has five "wives," including his ex-fiancee Ciara, the mother of his five-year-old son Future Zahir.
Soon after the lawsuit was filed, he wrote, "I have 5 wives BTW (by the way). Love them all to death."
Seraphin isn't the only woman taking Future to court over paternity - Cindy Renae Parker lodged a similar suit in Texas last month, claiming he is the father of her son Legend, who was born in July.


Roman Coin Image Search
Version 1.0.1
Please insert images of the two sides of the coin on a white background


- Let's use that snippet to try and implement a couple of APIs from Mashable.
- Get yourself an API key by following these instructions: url
Yoda Speak API
- We'll start off by using the Yoda Speak API. I'm basing this tutorial off of a fiddle I found online
- Here, we create the HTML for the code.

Go ahead, try it out!

<input id="yoda_input" type="text"><button type="button" class="text_process btn btn-default btn-sm">Yoda Translate</button>

<input id="text_process_input" type="text"><button type="button" class="query_btn btn btn-default btn-sm">Search</button>

Output:

- Next, we're going to add the functionality. We'll use a click function.
$(".text_process").click(function(){
});
- Now, we're going to use ajax in order to query the url from the API. We'll also be sending the sentence that we want translated as part of the url parameters and then insert the returned Yoda Speak version of the sentence into an HTML element.
The AJAX request for our API is going to take several properties and values:
- url: this will be where we put the url of the API we're requesting.
- data: these are additional parameters we can send with the request. Note that each API will take different parameters, so read the documentation carefully. In this case, the sentence will be the string that will be appended to the url and then evaluated by the API.
- success: what to do if the AJAX request is successful. In our case, we're going to print out the data from the API response (hopefully, the Yoda translated string).
- error: what to do if the AJAX request runs into an error.
- beforeSend: Runs before the rest of the request runs. If beforeSend returns false, the rest of the request doesn't go through. In our case, we're going to be sending the API key to make sure we are authenticated.
$(".text_process").click(function(){
$.ajax({
url: 'https://yoda.p.mashape.com/yoda?sentence=', // The URL to the API. You can get this by clicking on "Show CURL example" from an API profile
type: 'GET', // The HTTP Method
data: {sentence: $("#yoda_input").val()}, // Additional parameters here
datatype: 'json',
success: function (data) {
$("#output").html(data);
},
error: function (err) {
alert(err);
},
beforeSend: function (xhr) {
xhr.setRequestHeader("X-Mashape-Authorization", "API KEY"); // Enter here your Mashape key
}
});
});


{{ settings?.headerText }}
{{ settings?.ticketPageClosedText ? settings.ticketPageClosedText : 'We are currently not accepting online ticket submissions, please try again later.' }}
Powered by {{ appComponent.title }}


Soporte Técnico
Subscribe
Full Name
Email
Password
Already a member ?
Go an Login
Authentication Required
Username
Password
Not a member yet ?
Sign Up


Invalid credentials!
You are now logged out.
Please log in:
Username:
Adam (Supervisor)
Amy
Aaron
Brooke (Supervisor)
Brent
Beth
Password: