The base route.
The HTTP client.
The connection timeout in milliseconds.
The connection resolver.
The performance counters.
The default headers to be added to every request.
The logger.
The configuration options.
The number of retries.
The invocation timeout in milliseconds.
The remote service uri which is calculated on open.
Adds a correlation id (correlation_id) to invocation parameter map.
invocation parameters.
(optional) a correlation id to be added.
invocation parameters with added correlation id.
Adds filter parameters (with the same name as they defined) to invocation parameter map.
invocation parameters.
(optional) filter parameters
invocation parameters with added filter parameters.
Adds paging parameters (skip, take, total) to invocation parameter map.
invocation parameters.
(optional) paging parameters
invocation parameters with added paging parameters.
Calls a remote method via HTTP/REST protocol.
HTTP method: "get", "head", "post", "put", "delete"
a command route. Base route will be added to this route
(optional) transaction id to trace execution through call chain.
(optional) query parameters.
(optional) body object.
(optional) callback function that receives result object or error.
Closes component and frees used resources.
(optional) transaction id to trace execution through call chain.
callback function that receives error or null no errors occured.
Configures component by passing configuration parameters.
configuration parameters to be set.
Adds instrumentation to log calls and measure call time. It returns a CounterTiming object that is used to end the time measurement.
(optional) transaction id to trace execution through call chain.
a method name.
CounterTiming object to end the time measurement.
Adds instrumentation to error handling.
(optional) transaction id to trace execution through call chain.
a method name.
an occured error
(optional) an execution result
(optional) an execution callback
Checks if the component is opened.
true if the component has been opened and false otherwise.
Opens the component.
(optional) transaction id to trace execution through call chain.
callback function that receives error or null no errors occured.
Sets references to dependent components.
references to locate the component dependencies.
Generated using TypeDoc
Abstract client that calls remove endpoints using HTTP/REST protocol.
Configuration parameters
References
*:logger:*:*:1.0
(optional) ILogger components to pass log messages*:counters:*:*:1.0
(optional) ICounters components to pass collected measurements*:discovery:*:*:1.0
(optional) IDiscovery services to resolve connectionRestService
CommandableHttpService
Example
class MyRestClient extends RestClient implements IMyClient { ... public getData(correlationId: string, id: string, callback: (err: any, result: MyData) => void): void { let timing = this.instrument(correlationId, 'myclient.get_data'); this.call("get", "/get_data" correlationId, { id: id }, null, (err, result) => { timing.endTiming(); callback(err, result); }); } ... } let client = new MyRestClient(); client.configure(ConfigParams.fromTuples( "connection.protocol", "http", "connection.host", "localhost", "connection.port", 8080 )); client.getData("123", "1", (err, result) => { ... });


| 040:064 Khan | : |
Allah, it is He Who has made for you the earth as a dwelling place and the sky as a canopy, and has given you shape and made your shapes good (looking) and has provided you with good things. That is Allah, your Lord, then blessed be Allah, the Lord of the 'Alamin (mankind, jinns and all that exists). |
| 040:064 Maulana | : |
Allah is He Who made the earth a resting-place for you and the heaven a structure, and He formed you, then made goodly your forms, and He provided you with goodly things. That is Allah, your Lord -- so blessed is Allah, the Lord of the worlds. |
| 040:064 Pickthal | : |
Allah it is Who appointed for you the earth for a dwelling-place and the sky for a canopy, and fashioned you and perfected your shapes, and hath provided you with good things. Such is Allah, your Lord. Then blessed be Allah, the Lord of the Worlds! |
| 040:064 Rashad | : |
GOD is the One who rendered the earth habitable for you, and the sky a formidable structure, and He designed you, and designed you well. He is the One who provides you with good provisions. Such is GOD your Lord; Most Exalted is GOD, Lord of the universe. |
| 040:064 Sarwar | : |
It is God who has created the earth as a place for you to live and the sky as a dome above you. He has shaped you in the best form and has provided you with pure sustenance. This is God, your Lord. Blessed is God, the Lord of the Universe. |
| 040:064 Shakir | : |
Allah is He Who made the earth a resting-place for you and the heaven a canopy, and He formed you, then made goodly your forms, and He provided you with goodly things; that is Allah, your Lord; blessed then is Allah, the Lord of the worlds. |
| 040:064 Sherali | : |
ALLAH is HE who has made for you the earth a resting-place and the heaven a structure for protection, and has given you shapes and made your shapes perfect, and has provided you with pure things. Such is ALLAH, your Lord. So blessed is ALLAH, the Lord of the worlds. |
| 040:064 Yusufali | : |
It is Allah Who has made for you the earth as a resting place, and the sky as a canopy, and has given you shape- and made your shapes beautiful,- and has provided for you Sustenance, of things pure and good;- such is Allah your Lord. So Glory to Allah, the Lord of the Worlds! |
Concepts/Themes Covered: أركان الإسلام > التوحيد > توحيد الله تعالي > حمد الله تعالى وتسبيحه والثناء عليه Pillars of Islam> Islamic> Oneness of Allah> Praise be to Him أركان الإسلام > التوحيد > توحيد الله تعالي > ربوبيته جلّ وعلا Pillars of Islam> Islamic> Oneness of Allah> His Divinity, the Great and Almighty أركان الإسلام > التوحيد > توحيد الله تعالي > صفات الله تعالى > رب العالمين Pillars of Islam> Islamic> Oneness of Allah> His Glory's Characteristics> Lord of the Worlds أركان الإسلام > التوحيد > توحيد الله تعالي > وحدانيته Pillars of Islam> Islamic> Oneness of Allah> Singularity and Being Unique الإنسان والعلاقات الاجتماعية > الإنسان > شرفه ودنوه Man and The Social Relations>Man>When Honourable and When Unhonourable الإنسان والعلاقات الاجتماعية > الرجل والمرأة Man and The Social Relations>Man and Woman العلوم والفنون > الحقائق العلمية و الإشاة إلى وقائع أيدتهاالإكتشافات العلمية > الماء ونشأة الحياة Science and Art> The Scientific Facts and the Indication to Facts which have been supported by the Scientific Discoveries>Water and the Early Life
This tool uses eight English parallel translations for the Holy Quran imported from Mr. Clay Smith. You can also visit Qurany Concepts for browsing the Quran themes or topics. If you want to search the Holy Quran for keywords, please visit Qurany Keywords.


European Space Agency | 14 November, 2019
ESA-Sponsored Students attended the IAC 2019
Indian Express | October 19, 2019
Indian-origin woman scientist heads to Antarctica, eyes space
Jamini Design | September 25, 2019
Dreaming of the stars with Priyanka Das
Eastmojo | July 05, 2019
Women & science? This Assam native is breaking stereotype in Paris
Pratidin Time | July 03, 2019
Assam's Priyanka Das Selected For Homeward Bound 2020
Pratidin Time | June 04, 2018
Assam’s Priyanka Das appointed ambassador of ‘For Girls and Science’ initiative in France
French Embassy in India | April 12, 2018
Testimony of an Indian Student Priyanka Das in France
ISAE-Supaéro | March 22, 2018
An interview with Priyanka Das, a PhD student at ISAE
Assam Times | January 27, 2018
Ever since I first saw the sky


AB 01 COCODY
Treshville
Abidjan
My Name is Miriam; I worked as a maid to Mr. ROBERT BUTLER an American, who used to be a contractor with an oil servicing company based here in Cote D’Ivoire. Last year,{Jan. 2006} my master died of a serious illness, but before his death, he told me in confidence of a fund of Twenty Seven Million dollars (US$27,000,000.00) which he concealed in two trunk boxes and deposited with a finance House in Cote D’Ivoire. However, the Finance house does not know the true content of the trunk to be cash as my Master declared upon deposit as containing art craft for export.
Because of the fast deteriorating state of his health, he was afraid that he might die loosing all he has in a foreign country. He instructed me that if he dies, I should try everything within my capability to make sure that his fund at the safe keeping house gets into the hands of the less privileged in his home country and he handed over the documents of this deposit to me with a written instruction.
I have contacted the finance house over this issue, but they refused to release the trunk Boxes to me, unless I bring any of Mr. ROBERT BUTLER'S relatives. This is a very tough situation for me, because since I lived with my master, he has not mentioned any of his family or extended relatives and Since I have been unsuccessful in locating the relatives for over a year now, I seek your consent to present you to the finance house as an extended relative of my master so that the trunk boxes can be released to you and you will use some part of the money inside for the good purpose of my master while the both of us share the remaining.
If you can handle this with me, kindly respond back immediately and we will negotiate on what will be given to you for your kind effort.
Thanking you for your cooperation.
Miriam
Live Earth is coming. Learn more about the hottest summer event - only on MSN. Check it out!


Recursion
Basically recursion is a function that calls it self. For example:
Every time when the function calls itself, “n” is reduced by 1 and finally n will equal 0 and then it will return 1.
The idea of recursion is to transform a big problem into a smaller one, making it easier to solve. This is the most important part of recursion, when function will get to that part will finally return value and this is base case. It must be defined correctly, if not, the function will get into an infinite loop and will call itself forever.
It took me a lot of time to get a grasp on recursion. Once I did, I was applying recursion whenever it was possible, which is a mistake, because recursion is not an answer to everything.
Recursion makes code much cleaner, but it also makes it slower, so its up to the programmer to decide which is the best solution for his problem.
06/14/2014


Honzi/Personal Bests/Hearthstone/Goblins vs Gnomes
| Target Dummy
| 0
| Rare
| Neutral
| 2
|
|
| Clockwork Gnome
| 1
| Common
| Neutral
| 2
| 1
|
| Cogmaster
| 1
| Common
| Neutral
| 2
|
|
| Light of the Naaru
| 1
| Rare
| Priest
| 2
|
|
| Warbot
| 1
| Common
| Warrior
| 2
| 1
|
| Annoy-o-Tron
| 2
| Common
| Neutral
| 2
|
|
| Anodized Robo Cub
| 2
| Common
| Druid
| 2
|
|
| Call Pet
| 2
| Rare
| Hunter
| 2
|
|
| Crackle
| 2
| Common
| Shaman
| 2
|
|
| Darkbomb
| 2
| Common
| Warlock
| 2
|
|
| Explosive Sheep
| 2
| Common
| Neutral
| 2
|
|
| Flamecannon
| 2
| Common
| Mage
| 2
|
|
| Gilblin Stalker
| 2
| Common
| Neutral
| 2
|
|
| Glaivezooka
| 2
| Common
| Hunter
| 2
|
|
| Goblin Auto-Barber
| 2
| Common
| Rogue
| 2
|
|
| Mechwarper
| 2
| Common
| Neutral
| 2
|
|
| Micro Machine
| 2
| Common
| Neutral
| 2
|
|
| One-eyed Cheat
| 2
| Rare
| Rogue
| 2
|
|
| Puddlestomper
| 2
| Common
| Neutral
| 2
| 1
|
| Queen of Pain
| 2
| Rare
| Warlock
| 2
|
|
| Seal of Light
| 2
| Common
| Paladin
| 2
|
|
| Shadowboxer
| 2
| Rare
| Priest
| 2
|
|
| Shielded Minibot
| 2
| Common
| Paladin
| 2
|
|
| Ship's Cannon
| 2
| Common
| Neutral
| 2
|
|
| Shrinkmeister
| 2
| Common
| Priest
| 2
|
|
| Snowchugger
| 2
| Common
| Mage
| 2
|
|
| Steamwheedle Sniper
| 2
| Epic
| Hunter
| 1
|
|
| Stonesplinter Trogg
| 2
| Common
| Neutral
| 2
|
|
| Unstable Portal
| 2
| Rare
| Mage
| 2
|
|
| Vitality Totem
| 2
| Rare
| Shaman
| 2
|
|
| Whirling Zap-o-matic
| 2
| Common
| Shaman
| 2
|
|
| Flying Machine
| 3
| Common
| Neutral
| 2
|
|
| Gnomeregan Infantry
| 3
| Common
| Neutral
| 2
|
|
| Gnomish Experimenter
| 3
| Rare
| Neutral
| 2
|
|
| Goblin Sapper
| 3
| Rare
| Neutral
| 2
|
|
| Grove Tender
| 3
| Rare
| Druid
| 2
| 1
|
| Hobgoblin
| 3
| Epic
| Neutral
| 1
|
|
| Illuminator
| 3
| Rare
| Neutral
| 2
|
|
| Iron Sensei
| 3
| Rare
| Rogue
| 2
|
|
| Lil' Exorcist
| 3
| Rare
| Neutral
| 2
|
|
| Metaltooth Leaper
| 3
| Rare
| Hunter
| 2
|
|
| Muster for Battle
| 3
| Rare
| Paladin
| 2
|
|
| Ogre Brute
| 3
| Common
| Neutral
| 2
|
|
| Ogre Warmaul
| 3
| Common
| Warrior
| 2
|
|
| Powermace
| 3
| Rare
| Shaman
| 2
|
|
| Scarlet Purifier
| 3
| Rare
| Paladin
| 2
|
|
| Soot Spewer
| 3
| Rare
| Mage
| 2
|
|
| Spider Tank
| 3
| Common
| Neutral
| 2
|
|
| Tinkertown Technician
| 3
| Common
| Neutral
| 2
|
|
| Velen's Chosen
| 3
| Common
| Priest
| 2
| 1
|
| Arcane Nullifier X-21
| 4
| Rare
| Neutral
| 2
|
|
| Burly Rockjaw Trogg
| 4
| Common
| Neutral
| 2
|
|
| Dunemaul Shaman
| 4
| Rare
| Shaman
| 2
|
|
| Fel Cannon
| 4
| Rare
| Warlock
| 2
|
|
| Goblin Blastmage
| 4
| Rare
| Mage
| 2
|
|
| Imp-losion
| 4
| Rare
| Warlock
| 2
|
|
| Jeeves
| 4
| Rare
| Neutral
| 2
|
|
| Kezan Mystic
| 4
| Rare
| Neutral
| 2
|
|
| Lost Tallstrider
| 4
| Common
| Neutral
| 2
|
|
| Mechanical Yeti
| 4
| Common
| Neutral
| 2
|
|
| Piloted Shredder
| 4
| Common
| Neutral
| 2
|
|
| Screwjank Clunker
| 4
| Rare
| Warrior
| 2
|
|
| Tinker's Sharpsword Oil
| 4
| Common
| Rogue
| 2
|
|
| Wee Spellstopper
| 4
| Epic
| Mage
| 2
|
|
| Antique Healbot
| 5
| Common
| Neutral
| 2
|
|
| Bomb Lobber
| 5
| Rare
| Neutral
| 2
|
|
| Cobalt Guardian
| 5
| Rare
| Paladin
| 2
|
|
| Cobra Shot
| 5
| Common
| Hunter
| 2
|
|
| Demonheart
| 5
| Epic
| Warlock
| 1
|
|
| Druid of the Fang
| 5
| Common
| Druid
| 2
|
|
| Floating Watcher
| 5
| Common
| Warlock
| 2
|
|
| King of Beasts
| 5
| Rare
| Hunter
| 2
|
|
| Madder Bomber
| 5
| Rare
| Neutral
| 2
|
|
| Ogre Ninja
| 5
| Rare
| Rogue
| 2
|
|
| Salty Dog
| 5
| Common
| Neutral
| 2
|
|
| Siege Engine
| 5
| Rare
| Warrior
| 2
|
|
| Upgraded Repair Bot
| 5
| Rare
| Priest
| 2
|
|
| Mech-Bear-Cat
| 6
| Rare
| Druid
| 2
|
|
| Piloted Sky Golem
| 6
| Epic
| Neutral
| 2
|
|
| Recycle
| 6
| Rare
| Druid
| 2
|
|
| Shieldmaiden
| 6
| Rare
| Warrior
| 2
|
|
| Force-Tank MAX
| 8
| Common
| Neutral
| 2
|
|
| Mal'Ganis
| 9
| Legendary
| Warlock
| 1
|
|
| Clockwork Giant
| 12
| Epic
| Neutral
|
| 1
|


[gecode-users] compiler memory problem
Patrik Haslum
patrik.haslum at anu.edu.au
Fri Nov 21 06:21:47 CET 2008
Hi,
I tried adding various combinations of the additional flags on your
commandline, and none made a difference. But after an upgrade to a more
recent version of the compiler (g++ 4.3.2) it works fine. So this seems
to have been a compiler-specific issue.
Thanks,
/P at trik
Tias Guns wrote:
> Hey,
>
> I'm running gcc 4.1.3 and the code provided compiles and runs without
> problems. Maybe check the compile flags used (like -finline-limit=3000),
> those are the same flags as used for the examples (at least in version
> 2.0.1).
>
>
> Greetings,
> Tias
>
> [tias at demerzel]test make
> g++ /home/tias/local/src/gecode-2.2.0/examples/support/options.o
> /home/tias/local/src/gecode-2.2.0/examples/support/example.o -L.
> -L/home/tias/local/src/gecode-2.2.0 -I.
> -I/home/tias/local/src/gecode-2.2.0 -DNDEBUG -fvisibility=hidden -fPIC
> -Wextra -Wall -pipe -ggdb -O3 -fno-strict-aliasing -finline-limit=3000
> -ffast-math -mtune=i686 -lgecodesearch -lgecodeint -lgecodekernel
> -lgecodesupport -lgecodegist test.cc -o test
> test.cc:51: warning: unused parameter ‘home’
> test.cc:51: warning: unused parameter ‘med’
> test.cc:87: warning: unused parameter ‘argc’
> test.cc:87: warning: unused parameter ‘argv’
> [tias at demerzel]test ls
> Makefile test* test.cc
> [tias at demerzel]test ./test
> 1
> [tias at demerzel]test gcc -v
> Using built-in specs.
> Target: i486-linux-gnu
> Configured with: ../src/configure -v
> --enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr
> --enable-shared --with-system-zlib --libexecdir=/usr/lib
> --without-included-gettext --enable-threads=posix --enable-nls
> --with-gxx-include-dir=/usr/include/c++/4.1.3 --program-suffix=-4.1
> --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug
> --enable-mpfr --enable-checking=release i486-linux-gnu
> Thread model: posix
> gcc version 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)
> [tias at demerzel]test
>
>
> On Thu, 20 Nov 2008 09:45:25 +0100, Christian Schulte <cschulte at kth.se>
> wrote:
>
>> Hi Patrik,
>>
>> Going by your example code, this should very definitely not pose any
>> problem, Gecode itself uses way more elaborate constructions with
>> patterns.
>>
>> One reason for the problem could be the part you do not tell us: if
>> you have code that uses a lot of inlining, then that could be a problem.
>>
>>
>> Otherwise, that particular version of gcc might be at fault. As I do
>> not use gcc that much I don't know whether this version is a bad one.
>>
>> Cheers
>> Christian
>>
>> --
>> Christian Schulte, www.ict.kth.se/~cschulte/
>>
>> -----Original Message-----
>> From: users-bounces at gecode.org [mailto:users-bounces at gecode.org] On
>> Behalf Of Patrik Haslum
>> Sent: Thursday, November 20, 2008 9:26 AM
>> To: users at gecode.org
>> Subject: [gecode-users] compiler memory problem
>>
>>
>> Hi,
>>
>> I've written a custom propagator. It is based on one of the existing
>> templates, Gecode:BinaryPropagator, with an array of boolean views as
>> the template argument. It works, but the compiler (g++ 4.1.2) is
>> having serious trouble with the code: if I try to use any compiler
>> optimisation (that is, anything other than -O0), the compiler eats up
>> all memory (including swap) and never finishes. I know that using many
>> and/or nested templates tends to increase compiler memory use, but
>> this case is worse than anything I've encountered before. Is this a
>> known problem?
>> (perhaps fixed in some more recent g++ compiler). Is there some way to
>> work around it? (other than disabling compiler optimisation, because
>> that *really* slows down the solver). The only other option I can
>> think of is to write the propagator from scratch, without relying on
>> any base template.
>>
>> Attached is a simplified version of the code (it doesn't contain any
>> actual functionality, just the minimum that is needed to cause the
>> compiler to behave this way).
>>
>> Thanks,
>> /P at trik
>>
>>
>> _______________________________________________
>> Gecode users mailing list
>> users at gecode.org
>> https://www.gecode.org/mailman/listinfo/gecode-users
>
>
More information about the gecode-users
mailing list


--- layout: post title: Databases, data, small data, big data... date: 2014-11-06 15:24:28.000000000 +00:00 categories: [] tags: [] status: draft type: post published: false meta: {} author: ---


Tree Classification Tool
The sequence identity tool uses pattern matching to find similarity with vaccines and RFLP values from the present nucleotide sequences in the ISU VDL data.
Neighbour joining algorithm is used to identify the closest matching lineage for the nucleotide sequences and is depicted as a phylogenetic tree.


Are you feeling {{this.emojiString}}?
How would you rate the intensity of your feelings?
(1 means a little, 5 means extremely)


# -*- coding: utf-8 -*-
<%inherit file="/base.html" />
<%def name="head_tags()">
Item View
%def>
Data package ${c.id}
% if c.version:
Version ${c.version}
% elif c.versions:
Version ${c.versions[-1]}
% endif
% if c.editor:
% endif
% if c.version and c.versions and c.version == c.versions[-1]:
You are currently viewing the latest version (${c.versions[-1]}) of the data package
% elif c.version:
You are currently viewing version ${c.version} of the data package
% elif c.versions:
You are currently viewing the latest version (${c.versions[-1]}) of the data package
% else:
You are currently viewing the latest version of th data package
% endif
% if c.versions:
View other versions:
% for v in c.versions:
% if c.version and v == c.version:
- ${v}
% elif (not c.version) and (v == c.versions[-1]):
- ${v}
% else:
- ${v}
% endif
% endfor
% endif
% if c.parts:
Data package contents within ${c.path}
% if c.show_files:
% if c.editor:
<%include file="/part_list.html"/>
% else:
<%include file="/part_list_display.html"/>
% endif
% else:
You do not have permission to view these files
% endif
% else:
There are no files or folders in this path
% endif
% if c.readme_text:
README text
<%include file="/readme_section.html"/>
% endif
% if c.editor and c.view == 'editor':
Upload file to ${c.id}/${c.path}:
<%include file="/item_file_upload.html"/>
% endif


The lxqt-l10n package provides translations for all components of the LXQt desktop.
This package is known to build and work properly using an LFS-8.0 platform.
Download (HTTP): https://github.com/lxde/lxqt-l10n/releases/download/0.11.2/lxqt-l10n-0.11.2.tar.xz
Download MD5 sum: 5d4709297d35486a4c6227203967c079
Download size: 608 KB
Estimated disk space required: 26 MB for the whole translations set
Estimated build time: 0.2 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/lxqt-l10n
Install lxqt-l10n by running the following commands:
mkdir -v build && cd build && cmake -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=$LXQT_PREFIX \ .. && make
This package does not come with a test suite.
Now, as the root
user:
make install
-DWITH_<PACKAGE>=no
: Do not
install translations for PACKAGE, where PACKAGE is COMPTON_CONF,
LIBFM_QT, LIBLXQT, LXIMAGE_QT, LXQT_ABOUT, LXQT_ADMIN, LXQT_CONFIG,
LXQT_GLOBALKEYS, LXQT_NOTIFICATIOND, LXQT_OPENSSH_ASKPASS,
LXQT_PANEL, LXQT_POLICYKIT, LXQT_POWERMANAGEMENT, LXQT_RUNNER,
LXQT_SESSION, LXQT_SUDO, OBCONF_QT, PCMANFM_QT, or QTERMINAL.
Last updated on 2017-02-21 12:13:57 -0800


c-tilemap
open-source util that converts
Tiled
tilemaps to plain sweet c arrays.
drop json tilemap
download c array
by
@dasilvacontin


Loading pages...
Loading ...
X
Recorded sessions
Show data
from:
to:
Results/page:
5
10
15
20
40
80
120
All of them
Tag filters:
+
Date
Country
Window Size
Browser
Referrer
Visited pages
Tags
Record
Loading clients, please wait...
Delete selected sessions
User information
Tags:
X
Skip pauses:
►
Skip page >>


COMPONENT template: using DOM template to use components statically
COMPONENT ngFor: Most complete example that uses Component wrapper for grid and gridItem
COMPONENT dynamic: Best example that uses Component wrapper and dynamic grid creation (drag between grids, from toolbar, etc...)
Nested Grid: shows nested component grids, like nested.html demo but with Ng Components
two.html: shows multiple grids and outside drag&drop


{% overextends "wagtailadmin/login.html" %} {% block branding_login %}Sign in to blah blah blah{% endblock %}


There's some discussion in the Rails world going on about FastCGI and scaling: pro FastCGI and anti FastCGI. Python's position here is kind of vague, because it supports both models reasonably well (though the Horrible Global Interpreter Lock makes the single process model slightly less scalable than it might otherwise be).
"FastCGI" is a misnomer here, and both sides seem rather misinformed. This is a discussion about the differences between threaded concurrency, with a pool of worker threads, and multi-process concurrency, with a pool of worker processes. FastCGI can do either, though it has extra (confusing) features for worker processes.  Because of FastCGI's flaws, people constantly create and recreate the basic functionality -- SCGI, PCGI, mod_webkit, mod_skunk, AJP, and no doubt a whole slew of other similar things I don't know about.
OK, so ignore the FastCGI stuff. The issue is about concurrency. Apparently some Java-heads are having a hard time believing that a worker process model can be scalable. This is frankly bizarre, and I fear a sign of myopia in that community. Or just a sign of a few crackpots who are good typists -- probably best not to condemn the community for one guy.
The worker model is nothing new -- it's what Apache 1.3 does exclusively, and one of the concurrency options for Apache 2. The concurrency model for mod_ruby is the same as their FastCGI option, and mod_python if you happen to be using the worker model under Apache 2. In that model, you have multiple processes, and there's a queue of incoming requests -- a free process picks a request off the queue, processes only that request, and when finished grabs another request. In a threaded model almost the exact same thing happens, except there's worker threads. Not Very Different.
This multiprocess model has some advantages and disadvantages, none of which are nearly as extreme as anyone seems to think -- you still have to handle concurrency and contention for shared resources. Some in-process resources that are not threadsafe, like database connections, are automatically isolated. But other locking can be slightly harder, and generally shared resources are more difficult. One advantage is that you are encouraged from the beginning to share data in a way that scales across multiple machines. It's not really a choice for Ruby systems, because Ruby doesn't support OS-level threads, which I believe means that blocking I/O will block all threads in the process (among other issues).
In Python people go both ways. Threading seems to be more common, probably because it's more obvious and is easy to scale until you hit the one-process/one-machine barrier. Zope, Webware, and CherryPy are all threaded. SkunkWeb, CGI, and mod_python all use multiple processes (well, mod_python can use a single process with multiple interpreters, but I believe requests always are processed in separate interpreters). Quixote and now WSGIKit are fairly neutral on the matter. I'm not sure where other frameworks lie. And of course there is asynchronous (event driven) programming, which is non-threaded single-process. This is popular on the network level -- Twisted, Medusa, asyncore -- but relatively uncommon in higher level systems, with Nevow being the exception.
In respect of your comment:
mod_python can use a single process with multiple interpreters, but I believe requests always are processed in separate interpretersCreation of separate interpreters in mod_python is to do with management of your URL namespace and is nothing really to do with threading. That is, if you want web applications hosted in different parts of your URL namespace to not intefere with each other, you designate those different parts of the URL namespace as running in distinct interpreters.
For a particular instance of an interpreter within a process, whether it be managing the whole URL namespace or just a part, when using a multithreaded MPM in Apache such as the default for Win32 or the worker MPM for UNIX, there can be multiple requests within distinct threads active within the same interpreter at the same time.
The only catch with all of this is that there are a couple of thread bugs in mod_python which you would want to patch if wanting to seriously use threading in any way. These are currently documented at "http://www.dscpl.com.au/projects/vampire/patches.html".
Thanks. I guess this means that (probably like mod_ruby, mod_php, and a bunch of others) that it's safest to keep to keep to the multiprocess model.
It is always going to be safer to avoid multithreading, but that is more to do with people not appreciating what it takes to write a robust multithreaded application and nothing to do with any fixable bugs.:-)
Actually the 'worker' MPM in Apache 2 uses is mult-process and multi-thhreaded... Its a combination of the traditional 'pre-fork' model and a purely threaded system. It has some advantages, like a crash in one process will not destroy the entire server, and that for the most part you get the advantages of a purely-threaded server.
For me Zope, isn't the best thread example. In fact it use only a very small amout of threads, and doesn't really use it in the way everybody think. It only avoid the medusa to lock the whole suff.# jkx
Well , it looks to me that fastcgi is rather ubiquitous , solid fastcgi support in Python is maybe a possible way forward to seriously take python web development out of the current ghetto. Out of Apache , the ruby train appears to move forward with just that (see lighttpd...).# Marc
Personally it's the Apache side of FastCGI that has always been hard for me to set up, not the Python side. Other people are also using HTTP proxying, which is better supported still, but unfortunately doesn't have quite the same information as FastCGI passes through (SCRIPT_NAME and PATH_INFO particularly, but other information like REMOTE_USER is also lost -- resolveable through configuration, but then it's no longer as easy to configure).
Apache 2.1 will finally add the ability to load-balance mod_proxy requests, and I trust HTTP more than a semi-orphaned protocol like FastCGI or its clones.
Until recently we were running mod_proxy on a farm of Apache 1.3 servers to funnel about 300,000 HTTP requests per day into a single multithreaded Python BaseHTTPServer process (using the PSP engine from WebWare, with the rest of WebWare ripped out), on a lowly P3/500, no less. GIL contention is probably less of an issue than many people believe in real-world applications, although it would help if there were a tool to measure it and/or something like an exponentially decaying average of the numbers of threads waiting to acquire the GIL.
And, just in case you didn't know, there is now a way to write WSGI capable applications that use FastCGI and any capable web server (apache and lighttpd). I wrote a quick howto for setting up lighttpd to use it on my weblog:
http://www.cleverdevil.org/computing/24/python-fastcgi-wsgi-and-lighttpd
Back-in-the-day, I worked at fastengines, the openmarket spinoff that productized the original fastcgi. One of the things we were very clear on is that the advantages were not actually about the concurrency itself, but came in a few areas:
- by "prestarting" processes, you could hide startup overhead
- you could force processes to die relatively often so as to avoid having to care about memory leaks
- more generally, you simply didn't have to think very hard about your development model, it was just "throw a loop around your existing CGI function"
- you could handle peak load by "borrowing" extra machines, instead of buying lots of mostly idle hardware
All of this made it quite popular among people who were not advanced developers, who didn't have time or resources to invest in frameworks... but had just gotten an application off the ground using basic CGI :-) So, nothing you'd mistake for "high design"...
Just a thing, AFAICT, ruby threads does not block the whole interpreter on I/O operations, this operations are automatically multiplexed, so if a thread is locked reading on a socket or whatever, another one can still does what he wants, just try this:
Thread.new {puts gets} while true
puts "working flawlessly with locked IO" sleep 4end
(there are pther issues with non native threads, but not this one)


{% extends theme %} {% block content %}
Server have moved to new hosting. Now mu online is hosted in Los Angeles, US!
At new hosting server wont have any more lag and have better connection and reduced ping to ASIA and
EU!
Perfect ping would be for US, Canada and Latin America players!!
New patch is recommenced to download! To do so run...
Perfect ping would be for US, Canada and Latin America players!!
New patch is recommenced to download! To do so run...
Server have moved to new hosting. Now mu online is hosted in Los Angeles, US!
At new hosting server wont have any more lag and have better connection and reduced ping to ASIA and
EU!
Perfect ping would be for US, Canada and Latin America players!!
New patch is recommenced to download! To do so run...
Perfect ping would be for US, Canada and Latin America players!!
New patch is recommenced to download! To do so run...
At new hosting server wont have any more lag and have better connection and reduced ping to ASIA and
EU!
Perfect ping would be for US, Canada and Latin America players!!
New patch is recommenced to download! To do so run...
Perfect ping would be for US, Canada and Latin America players!!
New patch is recommenced to download! To do so run...
Server have moved to new hosting. Now mu online is hosted in Los Angeles, US!
At new hosting server wont have any more lag and have better connection and reduced ping to ASIA and
EU!
Perfect ping would be for US, Canada and Latin America players!!