Fnct.d
文件大小: unknow
源码售价: 5 个金币 积分规则     积分充值
资源说明:Bash Shell-script, with common object definition and function-helper.
============
Fnct.D
============


.. image:: https://raw.github.com/priendeau/Fnct.D/master/images/Fnct_D_Cover.png
		:target: https://github.com/priendeau/Fnct.D#Fnct.D
		

:Info: See `github `_ for the latest source.
:Author: Patrick Riendeau
:Stade: Pre-Alpha, Draft specification not terminated.

Copyright
=========

::
	
	Copyright (c) 2009-2016 << Patrick. Riendeau, Maxiste Deams >>.
	All rights reserved.
	
	Redistribution and use in source and binary forms are permitted
	provided that the above copyright notice and this paragraph are
	duplicated in all such forms and that any documentation,
	advertising materials, and other materials related to such
	distribution and use acknowledge that the software was developed
	by the UnderscoreX.  The name of the
	UnderscoreX may not be used to endorse or promote products derived
	from this software without specific prior written permission.
	THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
	IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
	WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.

About
=====

This is a Library for managing function a permanent subset for a clean 
/etc/init.d and many distribution shell with doubtful feature and poor
verbosity and documentation. 


There is also postponing situation where this library should report be already in
use as "voluntary" effort. Somes have already discover this library as "potential"
artefact helping managing 'crisis situation', situation of 'imaginary backup' plan
where this library was involved ( and Unix / Linux as well ) as 'GOD' 
administrative, decisive situation. We all know 'God hand' to give thing 'quasi' 
instantly. This library help compressing Administrative task . Out of 
conventionnal wisdom, talking about Administrative involve talking about an 
economic role, function, it's licensing . This Economic ole like a Boss of a 
compagny  is more subject to fit in the God pattern, offering a lifetime for a 
worker spending thousands time it take to delivery what was asking and be 
delivered years before it's completion. This semantic of 'God Action' 
procuring way to 'get from future' and 'put from the past' is a realistic 
action done over the internet because some way to acces to a point in time is a 
procedural step introducing examples here in this library to show and uses 
this ability for this library to mention. This start on showing you example on 
how 'hacking' the PPP protocol driver from kernel to allow chaning the timeframe 
from passing different time inside a specific field from Packet of PPP . 

This was used, showed, done by hand in Canada, and still 'enrolled' inside this 
point of view of having an existentialism and authentic view of yourself throught 
this method of hacking kernel from Unix / Linux / BSD to allow Canadian radically 
changed it's mind silently since 1979, and still made Canada aware about every 
disaster.. We were waiting fort St-Helens eruption because we know the time 
of the explosion... 

But because I'm still in 2018 and still living in a minimalist sustainment mode 
which not really deserving it's utopic changes, Canada still delay it's way to 
help me helping survivor of this era. I should ask them to wait or to forward 
yourself in the future to seek for future update for this period of time unless 
I do receive some protective help. 


Function Management is especially important in this era, having important 
function or operator being mashed into one Lib ; They defined all appropriate 
exceptions and allow fews or fewer action if they are not correctly used. 
Starting from Declaration of variable to uses of simple command like let, uses 
of operator or even the test internal command equivalent to if [ ... ] ; then ... fi

A Common quote :


Bash Big Line
    It's especially important to declare it correctly and conceive a type definition if your function uses rather to not filtering the input at start and have many messages having problems to handle variable. Especially in Bash is actor or built-in/function/shell script to generate error on type not correctly handled. If the variable is design as Integer and hold String-like information, if you do nothing with that variable or called-it future-design, it won't tell you problems until the day you start to use it.
    
    
Preface
=======

These are Common Bash-Object for Fnctlib _pre-Alpha-Init.d re-implementation 
for services management in Ubuntu/Debian/Fedora, which pass sucessfully some handy-test 
in 3 years of development.


Why we are defining Using Fnct.D
================================

It's Dialectic context. Purely ; mastering shell code like many of us, this Draft will not teach you trick, but having a dialectic context. Today rather than being Network administrator, coders, developers, you receive imperative order to complete a task and better to develop an adaptive context to adapt you to this ecosystem without leaving... Once in, we are all beg for if you can achieve a task, leeching forums and even tell password to root access to talk about your problems... On the other side, we are owning all weakness, from the Agora of Athens people develop talk of theirs competence under 'maïeutique' and prone a way until you find the equation to your problems. And walking to mont St-sinaï to receive presence of God had require you do a prone dialectic of faith to understand you are the elected one... Modern Dialectic is quite simple, it's the open-question being finite-automata, computer can formulate question made of finite-automata to answer to a question. At school we have many context for experiencing dialectic of a code in learning but does not own any path or way when it's time to apply a relation. Made from a dialectic from coders and networks administrator accessing beyond date many python-module to test and explore possibilities, we were able to talk about Twisted module around version 1.2 way before it's really exist. It's Canadian context, we can access to future even because we have all the infrastructure to manage occurrence and de-obfuscation of time-event. So talking strickly of having problems to install Twisted and beware we  are limited in contacting the creator ; we do beg for finalist. Having developed a semantic in this dialectic, was searching for sparse and protected sparse was merely what something can lead for a trace of continuity... It mus a least have one version that do not require cffi and does ultimately fix the solution. Getting down to SSH-socket to irc was catastrophic. And receiving you point of like by... I do start from beginning, taking first version compiling it into Egg, adding a first component at least on the required version and to a test-unit.. For cffi case, using all version of Twisted , adding lowest version allowed and test you unit with Exception and shell-script to detect a rerturn statement that goes in error, having decorator to write in file when it is not working and so forth. Today everything works from Swig making sense and Jython purely virtual, there is fewer Stem to develop to understand something taht not working than really putting hand in the system and inspecting, library, dynamic library, using objdump to find name-section and all header for compiled function, finding anomalies or simply compiled-problems.... Actually Openssl does nightmare like this, I'm not so for to old table in hand and ask to God, can you please the procedure to make a one pass compilation work... Ever getting Segmentation fault by the compiler and require second pass compilation. But Dialectic trace to support other in their UN-rullable problems made from something they may haven't correctly understand.

Post-Note
=========

Unlike old development of fnct_lib, such important function and design being redesigned to simply work. Fnct_lib leave the function __call_locality where an important overloading just corrupt the design. Also introduced the Getter and Setter thru the "\_\_call_locality" function was an echec and function does not support '.' in their name at all, in any version also I believe it's and event assembly export from many *nix design does not support '.' in their name... 

Old Fnct_lib was also developing a dangerous concept, The Post-Fixed variables. Where totally not handled, it should be supported by the function core like "\_\_call_locality" or any "\_\_fnctCreateLocalityFuncParam" and ... Also fnct_lib was trying to develop passing interface based on Base64 a uniform codec translation
a bit slower and really slowing the function when assignment 
"\_\_call_localityDisplayFunctionEntry=1" was made inside __call_locality function and using mere "\_\_in_for", a Loop-wrapper for Array and function Array => F(x)
execution. 

Today we leaving "\_\_call_locality" to implement external function reading the TAG.Now, __call_locality come back as Array, it accept the Root Named Prefixed-Variable and the full-name of the function. This setup leave some external function like  GetVarReference extracting almost anything and add a basic helper. Where is was impossible to create convenient Helper inside the original fnct_lib, GetVarReference had several acheivement... Weak and simple, but 
still work corretly. Two derivate from this external function, 
"\_\_GetVarReferenceList" "\_\_GetVarReferenceCompWord"  are also good candidate to produce steady services, Prefixed-Variable extraction and automation of Word Completion, a lacking design after hearing some group asking  to put on the thumb important reference while Network admin from late 1990 should have to administrate World and world of network by hand... There is no evolution between implementation of this services and methodology to implement it on safe base design.

Convention
==========

In this documentation some convention are used to explicitly name some element 
as it was defined by author and what the author defined inside this library.
According to this Library, following term :

- Evaluative-Executive brace is : equivalent to
 
.. code-block:: shell

 ' eval $( ... ) '
 
- Executive   brace is      : equivalent to 

.. code-block:: shell

 ' $( ... ) '

- Scoped  Variable  is      : equivalent to 

.. code-block:: shell

 local Varname 
 global Varname 
                                            
- Intrinsic   Function call : equivalent to 

.. code-block:: shell

 Var1=Value Var2=Value VarN. FunctionName
  
- Intrinsically abstract most of Var1, Var2, VarN are not existing inside FunctionName but does own presence for manipulation and or query. Is somewhat Object Approach realized with ValueToVariable, it serialize the Variable by using it appropriately.

- Prefixed    Function Call : equivalent to 

.. code-block:: shell

 FNa=Value FNb=Value FNz=Value FunctionName
  
  - Does exist in First part of the function Name and are mostly query with 
  __GetVarReferenceList a manager used with switch --help 

- Boolean Var Test          : equivalent to  

.. code-block:: shell

 BVTestVarName="NewVariable" 
 BVTestVarHold=${ExistingVariable} 
 BVTestBoolVarName=\${ReusedVariable-by-parsing} 
 BVTestBoolAssertion=\${NewVariable-by-parsing} 
 BoolVarTestVarCreation

.. code-block:: shell

 ### Will also produce this normal If/Else brace . 
 local StrPathSSH="/home/user" ;
  if [ "${IsHomeUser}" == "False" ]  ; then
    StrPathAttribute=${StrPathBase} ;
  fi

- Pass-Through or Variable-recopy is 

.. code-block:: shell

 ### Mechanism in function calling sub-function and preserve Variable integrity.
 ### For this re-writing code by simply had conservatory example like:
 ### - Long If-Line being pushed inside Function; Capturing variable inside this 
 ### long If Brace will reduce time re-writing the code by simply filling the 
 ### Prefixed-Variable named VTVValueEntry:
 
 eval $( VTVValueEntry=${StrVarList},StrWiteRegister,StrWriteTempInfo,StrUUID,StrTempUUID,StrDateEvent  \ 
           VTVIsArrayStyleInsert=True    \
           VTVIsValueReAssign=True       \
           VTVIsValueToConvert=False     \
           ValueToVariable  ) WriteUlimitStorage ;

- Re-Writing Short-Template or template is

.. code-block:: shell 

 ### This Hack Re-Write the template located inside an Assertive If-Condiftion on If-Side where
 ### default parameter inscribe here allow uses of an ValueToVariable form and re-writing
 ### The template named BVTVTVTPLA 
 ### from original form : 
 ###   Value:eval __TES__  __REGISTRY_ASRT__ VTVValueEntry=__VAR_ENTRY_ASRT__ ValueToVariable __TEE__ __FNCT_ASRT__
 ### To :
 ###   "\$( eval \"__FNCT_ASRT__\" )"
 ### Of course there is something missing like Function Name in this function called 
 ### Executive-Evaluative brace, so prefixed-var BVTVTFnctA should be used :
 ###  
 BVTIsPreambule=False                         \
 BVTBoolCase=True                             \
 BVTBoolVarName=\${BoolDisplayCmdOnly:=False} \
 BVTIsValueToVar=False                        \
 BVTBoolCase=True                             \
 BVTIsValueToVarAssert=True                   \
 BVTVTVTPLA="\$( eval \"__FNCT_ASRT__\" )"    \
 BVTVTFnctA=\${StrCmd}               BoolVarTest



Example of Development
----------------------

While Software development was observed in Compagny reaching CMM Level 2 ( Capability Maturing Model ), a free tools offering certified gadget to use to ensure your development may achaive Capable state of admitting the error can by simple misstyping and observation of result stored during development may reduce compromising and delaying idea to promote. While Capability Maturing Model [first]_ does show best practice, I do not really own compagny or real entity proning such state if the art action to developt. And merely acheived a function called GnrlPrsrInfctr which is the GeneralParserInfrastructure a costly-few risk application to wrap about any call in future of shell-command by controlled environement, Signed Instance being dumped inside /var/log... and ability to own different method to handle a to-Executable Query. Requiert attention and some effort like developping ZenityBuildForm, GetterByLineData where designed to craft a signed Command query to add inside error-fix.txt in case an anomaly during development is observed, Commentary left inside code may appear and disappear, but error-fix give state of GitHub refenrence like footprint for a reason a this stage it happen hand output is also stored to visit what it should like when a ParserTag failed, what a Executive-Brace lying around and doest execute command but leaving command-not-found exception... Here some hint about Profiting from GetterByLine data calling a Footprint command Line from /var/cache/Fnct.D/BuildForm.

.. code-block:: shell 

  ### Require to Build the Form and it's certified query.
  $> ZBFFunctionName=GnrlPrsrInfctr ZBFUUIDQuery=True ZenityBuildForm


.. image:: https://github.com/priendeau/Fnct.D/blob/master/images/ZenityContentListing-UC.png
 :target: https://github.com/priendeau/Fnct.D#Example of Development
 :align: center

.. code-block:: shell 

  ### Once the parameter choosed to inspect are selected you fill the second windows, and 
  ### the third line or the comment block after the command line is the UUID file-name 
  ### to catch inside /var/cache/Fnct.D/BuildForm, our example left is 
  ### f646c9a8-8786-11e6-8b1d-001e4c8856d6


.. image:: https://github.com/priendeau/Fnct.D/blob/master/images/ZenityBuildForm-UC.png
 :target: https://github.com/priendeau/Fnct.D#Example of Development
 :align: center

.. code-block:: shell 

  ### The Signed block is left inside example/BuildForm but it's a query made on my system and 
  ### once there. If there's error during development of GnrlPrsrInfctr I do confirm the query
  ### to launch it was correct, despite having 11 Prefixed-var to manage.
  ### This example is made from your Fnct.D path. 
  $> eval $( GBLDFileStoreInfo=examples/BuildForm/f646c9a8-8786-11e6-8b1d-001e4c8856d6 GBLDAction=GetContent GetterByLineData  ) ; 

  ### This will execute the query and SHALL HAVE to print the output inside error-fix.txt to notify wrong comportement of the application or any error discovered by data output, verbosis. 


.. image:: https://github.com/priendeau/Fnct.D/blob/master/images/ZenityBuildForm-out-UC.png
 :target: https://github.com/priendeau/Fnct.D#Example of Development
 :align: center


Other convention and Interesting methods of development will be introduce to enhance the nature of Shell-Script by adding example to Fnct.D and by showing Step of development of this library to fortify it's design .




.. [first]  Capability Maturing Model first_ : « Prior need for software processes »
"In the 1960s, the use of computers grew more widespread, more flexible and less costly. Organizations began to adopt computerized information systems, and the demand for software development grew significantly. Many processes for software development were in their infancy, with few standard or "best practice" approaches defined."



Unicity Convention
==================

A unicity convention allow a action or an in-memory ID to be totally unique by it's implementation and it uses somewhere inside an services instantiation from --startservices switche or short-action services with no need to call a  --stopservices switche a value being

1. Printed, stored permanently or kept in memory SHALL be revealed to be a UUID random number based on time. 
	
2. Transfered from and to the Higher Communication Layer from Internal StorageExternal Storage, Engine Storage and API Communication level and Function from Prefixed-Variable Level being Unique and respecting uses of UUID random number based on time. 
 
3. All this should be readable. By mean, we expect not using example in bash to let itself generating script, but python-layer will help improving database access by interposing some generated code made by python script. This will also be human readable or at least part-extractable to let the processor parse the syntax. We do imaginate having to parse some high volume of section like application vault and retain some tangible information while we developing function or applicative occlusion while some already depend of it's presence inside Unix/Linux environment. This should be revertible and offert alternative.Or either having restrictive application oclusionning some artifact. Like  in visualization AgentLoader, not owning the right of calling ssh-add, ssh-agent.Or simply function StartAgentSSH should never call something out of encryption package to call as example hacker-stuff independent package.  This is why everything should be readable. 

	
This mean a function from the Communication Layer communicating with other function will have to own Unique Prefixed-Variable attribute to transfer, redundant uses of same Prefixed-Variable with different value cause one of them being overwritten and cause an abnormal behavior to not corresponding to initial design. 

This also mean, communicating with Higher level like API and SQlite Engine will own a Unique-ID per transaction and this have to be unique and will communicate the Unique ID facility which is not an PkID made from integer but from UUID random number based on time.  

This is also invite Structural design to own memory by design component having inherent cache instruction being storing complete list of Prefixed-Variable being stored under Unique-ID and be accessible from SQLite Storage Engine facility to output initial inherited value from this Unique-ID. 

This will also implement a WILL of HAVING TO talk to API or SQLite Storage Engine facility by emitting a Unique-ID SHALL BE and Imperatively Be used by the facility and be automatically stored. 

Convention use in this development
==================================
By calling '**Idiom**' I will refer to a current sequence obtained by promoted output of an application and/or result of the system itself. Having property to be unique it also refer to it's unique family called sequenced-data. 
 
By calling '**Functor**' I  will refer to a  transient way  to call  conventional function and / or application with really general function statement. To use as simplification of statement and to simplify uses in End-Users test and uses. 

By calling '**Stub**' I will refer to a function ancestor replaced by a modern Fnct.D function name and or any Short-Named Function to replace a long function name. It's also used in one way function uses. Like BoolVarTestVarCreation is becoming versatile and will not only offer a one if / fi template, but some  stub will be generated to render easy to understand and use it . We do predict upcoming BoolVarTestVarCreation showing entering in higher mangling and will cover [ if - elif ], [ elif, elif ], [ elif , fi ] logical pair and will not only generate simple assertion based on scoped variable. 

Term '**general function statement**', stand for nominal function with less than 3 lines of code or only to hide End-User usability out of conventional method describe in Fnct.D to uses Variable direct re-definition in function call to allow reduction of Bash or similar shell to apply a ulimit and other mechanism to reduce length of element or limit of memory to achieve a debugging statement decoy similar problem in future bash - Sub command domain know to be function script language. 

Limitation
==========

Speed it's probably the most important factor in limitation and sometimes less understood in 
productivity and design pattern. Such consideration let sometimes afford other way to design
your information algorithm and/or producing code in other environment. 


Alike Awk and python, C, C++ , these are other alternative producing faster event 
and/or producing faster algorithm, Observed Fibonacci section with library 
_sub_binary producing, way than beyond highest number ever in this library will 
consider using awk-script to produce faster Fibonacci level number than simple 
and demonstrated C application made simply. Using Python with design and pattern 
recursion does produce limitation in computation. Using merely integrated 
the squared factor of fibonacci number to generate much higher than Awk-script 
that to stop at level 1476. The actual reason to x86_64 processor is to use 
multiplication to a specific MMUL register that to multiply over a 
memory-segment which is bigger thant 128 bits and in some processor context it
increase the number of register but has to be confirmed or infirmed . 

Following is simply a Memoize Application that generate fibonacci until you hit
CTRL+C to stop the application and restarting it will start-over to appropriate 
location it stop. Unless you want strict operation it lack the verification step
that confirm where it start, but as excercices is not bad to think about. 
 

*** Warning this python code is indented in tab=4 spaces . ***

.. code:: python

  import sys, os 
  import exceptions

  class Memoize( object ):
	fn = None
	memo = {}
	
	def __init__(self, fn):
	  print "Starting a {} instance".format( self.__class__.__name__ )
	  self.fn = fn
	  self.memo = {}

	@staticmethod
	def UseMemoize( ):
	  def decorator( func ):
		def inner( *args ):
		  if func.func_name not in Memoize.memo.keys():
			print "\nAdding Function Registration [{}] to Memoize\n".format( func.func_name )
			Memoize.memo[ func.func_name ]={}
		  else:
			CurrentMem = Memoize.memo[ func.func_name ]
			BoolNoIndexKey=True
			
			CurrListKey=Memoize.memo[ func.func_name ].keys()
			
			if len( CurrListKey ) > 0 :
			  CurrListKey.sort()
			  IntNextItem = len( CurrListKey )
			else:
			  Memoize.memo[ func.func_name ]={ 0:[] }
			  IntNextItem=1
			
			IntIndexfFind=None 
			if len( CurrListKey ) > 0:
			  for IntKey in CurrListKey:
				if len( CurrentMem[IntKey] ) > 0 :
				  if args in CurrentMem[IntKey][0] :
					BoolNoIndexKey=False
					IntIndexfFind=IntKey
			if BoolNoIndexKey == True :
			  Memoize.memo[ func.func_name ][IntNextItem]=[ args ,func( *args ) ]
			else:
			  AstrRet=str( Memoize.memo[ func.func_name ][IntIndexfFind][1] )
			  if len( AstrRet ) > 5 :
				AstrRet=AstrRet[0:5]
			  print "\nArgument requested, already have result, arg:{}, return:{}...\n".format( arg, AstrRet ) 
			  return Memoize.memo[ func.func_name ][IntIndexfFind][1]
		return inner
	  return decorator

	@staticmethod
	def __call__( arg ):
	  print "type of Memoize.memo : {}".format( type( Memoize.memo ) ) 
	  if arg not in Memoize.memo:
		AstrRet=str( Memoize.memo[arg] )
		if len( AstrRet ) > 5 :
		  AstrRet=AstrRet[0:5]
		print "Argument requested, already available, level:{}, return:{}...".format( arg, AstrRet )
		Memoize.memo[arg] = Memoize.fn(arg)
		return Memoize.memo[arg]


  class FibonacciRun( Memoize ):

	ComputedLevel = 1
	FunctionM = None 
	FibSwap = lambda A,a,b :(lambda f=A.__setitem__:(f( a , (A[a],A[b])),
													 f( b , A[a][0] + A[a][1] ),
													 f( a , A[a][1])))()
	ResSwap = lambda A,a,b :(lambda f=A.__setitem__:(f( a , (A[a],A[b])),
													 f( b , A[a][0]),
													 f( a , A[a][1])))()

	FibonacciLmbd = lambda (n):( 1 if (n == 1 or n==2) else FibonacciLmbd(n-1)+FibonacciLmbd(n-2))

	def __init__( self , FunctionM ):
	  self.FunctionM=FunctionM
	  print "Instantiating Object:{}".format( self.__class__.__name__ )
	  print "Current Function allocated inside Memoize: {}".format( self.FunctionM )
	  super( Memoize, self ).__init__(  )
	  super( FibonacciRun, self ).__init__( FunctionM )

	@Memoize.UseMemoize()
	def Fibonacci_LTMe(self, n):
	  a,b = 1,1
	  for i in range(n-1):
		a,b = b,a+b
	  return a

	### Self Memoize, imply registering the function
	### 
	def Fibonacci_Me(self, fn, arg):
	  memo = {}
	  if arg not in memo:
		memo[arg] = fn(arg)
		return memo[arg]

	def Fibonacci_R(self,n):
	  if n==1 or n==2:
		return 1
	  return self.Fibonacci_R(n-1)+self.Fibonacci_R(n-2)

	def Fibonacci_LT(self,n):
	  a=1
	  b=1
	  for i in range(n-1):
		c=a
		a=b
		b=c+b
		#a,b = b,a+b
	  return a

	def rootiply(self,a1,b1,a2,b2,c):
	  ''' multipy a1+b1*sqrt(c) and a2+b2*sqrt(c)... return a,b'''
	  return a1*a2 + b1*b2*c, a1*b2 + a2*b1

	def rootipower(self,a,b,c,n):
	  ''' raise a + b * sqrt(c) to the nth power... returns the new a,b and c of the result in the same format'''
	  ar,br = 1,0
	  while n != 0:
		if n%2:
		  ar,br = self.rootiply(ar,br,a,b,c)
		a,b = self.rootiply(a,b,a,b,c)
		n /= 2
	  return ar,br


	@Memoize.UseMemoize()
	def rootipowermod(self,a,b,c,k,n):
	  ''' compute root powers, but modding as we go'''
	  ar,br = 1,0
	  while k != 0:
		if k%2:
		  ar,br = self.rootiply(ar,br,a,b,c) 
		  ar,br = ar%n,br%n
		a,b = self.rootiply(a,b,a,b,c)
		a,b = a%n, b%n
		k /= 2
	  return ar,br

	@Memoize.UseMemoize()
	def RootPowerFibonacci(self,k):
	  ''' the kth fibonacci number'''
	  a1,b1 = self.rootipower(1,1,5,k)
	  a2,b2 = self.rootipower(1,-1,5,k)
	  a = a1-a2
	  b = b1-b2
	  a,b = self.rootiply(0,1,a,b,5)
	  # b should be 0!
	  assert b == 0
	  return a/2**k/5

	def powermod(a,k,n):
	  ''' raise a**k, modding as we go by n'''
	  r = 1
	  while k!=0:
		if k%2:
			r = (a*r)%n
		a = (a**2)%n
		k/=2
	  return r

	def mod_inv(self,a,n):
	  ''' compute the multiplicative inverse of a, mod n'''
	  t,newt,r,newr = 0,1,n,a
	  while newr != 0:
		quotient = r / newr
		t, newt = newt, t - quotient * newt
		r, newr = newr, r - quotient * newr
	  if r > 1: return "a is not invertible"
	  if t < 0: t = t + n
	  return t

	def RootPowerFibonacciMod(self,k,n):
	  ''' compute the kth fibonacci number mod n, modding as we go for efficiency'''
	  a1,b1 = self.rootipowermod(1,1,5,k,n)
	  a2,b2 = self.rootipowermod(1,-1,5,k,n)
	  a = a1-a2
	  b = b1-b2
	  a,b = self.rootiply(0,1,a,b,5)
	  a,b = a%n,b%n
	  assert b == 0
	  return (a*self.mod_inv(5,n)*self.mod_inv(self.powermod(2,k,n),n))%n


	def ComputeFib( self, StartLevel=None):
	  
	  BoolRun=True
	  print "Computing fibonacci level:"
	  if StartLevel != None:
		x = StartLevel
	  else:
		x = self.ComputedLevel
	  try:
		while BoolRun :
		  sys.stdout.write("{} ".format(x) )
		  v=getattr( self , self.FunctionM)( x )
		  x=x+1 
	  except exceptions.KeyboardInterrupt:
		BoolRun = False
		self.ComputedLevel = x 
		print "User Ask for cancellation, requested at Level:{}".format( x )



Other example of limitation, Number operation in Bash. While creator agree the 
Bash can afford (2^64)-1, the shell still have to intensify it's limitation 
itself  to a wide 2^32 numbers with all the extra... As example, using 
GetHighestFibHarmonic will support number to 2^44 and GetValueScaledFibHarmonic
too : 

.. code: shell

  ### GetHighestFibHarmonic
  Fnct.D $ GHFHIntNumber=$(( 2 ** 44 )) GetHighestFibHarmonic
  65,424505866851
  
  ### GetValueScaledFibHarmonic
  Fnct.D $ GVSFHIntValue=$(( 2 ** 44 )) GetValueScaledFibHarmonic
  65 57 53 48 44 41 39 36 31 27 23 21 19 15 13 7 2

Using higher Integer will lead to Integer number error during test with if 
statement. At this stade It look like Integer take form of String and using, 
greater than, equal than appear less usefull in String except one fact in 
String lexicographically sortability:

belong to bash man page:

Section 'CONDITIONAL EXPRESSIONS'

«Conditional expressions are used by the [[ compound command and the test and 
[ builtin commands to test file attributes and  per-form  string and arithmetic 
comparisons.  Expressions are formed from the following unary or binary 
primaries.  If any file argu-ment to one of the primaries is of the form 
/dev/fd/n, then file descriptor n is checked.  If the file argument  to  one  
of  the primaries is one of /dev/stdin, /dev/stdout, or /dev/stderr, file 
descriptor 0, 1, or 2, respectively, is checked.»

... some example of test ... 

string
       -n string
              True if the length of string is non-zero.

       string1 == string2
       string1 = string2
              True if the strings are equal.  = should be used with the test command for POSIX conformance.  When used with the [[  com-
              mand, this performs pattern matching as described above (Compound Commands).

       string1 != string2
              True if the strings are not equal.

       string1 < string2
              True if string1 sorts before string2 lexicographically.

       string1 > string2
              True if string1 sorts after string2 lexicographically.
              
 Where Some algorithm will have to be parsed in flavor of using sortability of 
 a string, but all uses of equation $(( VALUE1 OPERATOR VALUE2)) return 0 for
 too high integer. 

 Here an example of a script that do start at 2^32 and increase the exponnent 
 every turn:
 
.. code:: shell

  declare -a ArrayRes ; 
  for (( x=32 ; x <= 64; x++ )) ; do 
   echo -ne "Generating Scaled value for number : 2^${x}\n" ; 
   ArrayTes[${x}]=$( eval GVSFHIntValue=$(( 2 ** ${x} )) \
                          GVSFHDisplayDebug=False \
                          GVSFHDisplayEntry=False \
                          GVSFHDisplayProof=False \
                          GetValueScaledFibHarmonic  ) ; 
   echo -ne "\tReturn ${ArrayTes[${x}]}\n"; 
  done


.. image:: https://github.com/priendeau/ElectronicSheet/raw/master/images/GetValueScaledFibHarmonic.png
		:target: https://github.com/priendeau/Fnct.D#Limitation




Naming Convention
=================

Uses of some term to explicitly reffer to a specific definition is also used inside this Library and Documentation. 

- *Communication Layer* Stand for Prefixed-Variable to use to call a common function equiped from Fnct.D functionality . 
- *Prefixed-Variable* Stand for First Listed and Showed by GetVarReference Variables inside a Top function definition. Some other sub-function can include the same mechanism, assuming their role can grow and be extruded from function . 
- *Internal-Variable* Stand for Any variable not declared properly or implicitly not respecting the Naming convention site in __call_locality declaration 
- *__call_locality* Stand for First Identifiant inside a function, naming the function Argument or member 0 hold the Prefixed-Variable Prefixed-Name and Argument 1 hold the name of the function. 
- *Arg0* Stand for first Element from a list of parameter obtained from function call. Usually $* hold everything it was definied to not use it as strong reference and might be shorted or extended with uses of pop action and pushing function adding to function argument list extra information during a normal uses of the Shell-Bash . Called ArrayArg it hold on declaration of the function all incoming argument. 
- *If-statement*
  *If-elif-(n-elif)-f*
  *If-n-elif statement*
  Refer for a hard-stated Bash-Shell If statement or a BoolVarTestVarCreation result which depend of the result but once executed produce an hard-stated Bash-Shell If statement. 
	
Example of Bash-Shell If statement
	
.. code:: shell
	
	if [ TEST -eq VALUE ] ; then 
	 ...
	else
	 ...
	fi

OR

.. code:: shell
	
	if [ TEST -eq VALUE ] ; then 
	 ...
	elif [ TEST -eq VALUE ]; then 
	 ...
	fi

OR

.. code:: shell
	
	if [ TEST -eq VALUE ] ; then 
	 ...
	elif [ TEST -eq VALUE ]; then 
	 ...
	else
	 ... 
	fi

OR

.. code:: shell

 BVTestBoolVarName=TEST BVTestIfOp=-eq BVTestBoolCase=VALUE  BVTestVarName=... BoolVarTestVarCreation
 
 ### Will also produce this normal If .
 local ...="CONTENT" ;
  if [ "TEST" -eq "VALUE" ]  ; then
    ...="" ;
  fi
  
Convention in Example showed 
----------------------------

Almost all example without note or trace of existence inside the code are ideal example and are denoted from proof of existence inside the Library . 

A plausible case will also own function that merely look-like library development but does not own same structure are slightly different. If they are not denoted before exposition of the example, a Corpus from this library will show the function name and the revision in SHA-format and date can be added to revision information and YOU MUST rely on the period of exposition of the function and understanding the Library is evolving in term of functionality and the document only increasing in mass not considered to evolve by showing correction inside example function. This according to presentation of a draft example from a function case, demonstration or exception to show, including the revision and the name of the function you can check inside the Github to seek for the revision and it's evolution after the revision date. Which is possible to happen is a case showing a footprint of a function and useless part removed or simply replaced by '...' inside example to save time and focus on line concerned. All other example are free like precendent to be a free-form of exposition, old draft and prototype and might be absent from current development. 


Convention Structure generated 
------------------------------

There is no function here generating temporary member inside called Service-state directory. From /etc/init.d/Fnct.D only function, script and accessible member  are allowed. Storing information are per-user like .ArrayMdCd and .ArrayMdCd_Lock are per-user indice. Index from PackageRepositoryMgmt are external and are simple wasting the /etc/init.d/Fnct.D if 1-from cloning this project and decide to configure itself from it's branch and it's itself fault to corrupt it's own sample of Fnct.D with temporary information. 

There is not temporary code generated here inside a temporary buffer to execute after it's execution. While GetVarReference are self-worked to use live memory information to extract member and transform them into an Helper, the Low-Level Bash-to-Bash shall not own mechanism to create temporary file in /tmp, /temp, or any \${USER} forlder to execute it after it's generation. Having future version of Fnct.D in design to integrate Python-to-Bash and Bash-from-SQL and  those are only exception and are using Outlet, pluglet, socket and RPC to extract information and create temporary function in memory only. It SHALL NOT had deposed information temporary of any. 

Data are qualifed for permanent storage are elligible for storage and shall not contains executable code... This does not mean owning Taggable information and semantic-prone information to be re-interpreted. Storing function name, function Prefixed-variables and possible structure to form many function call from derivated engine are considered like configuration segment and shall return nothing if the content is accidently executed. Configuration segment are also to be stored in per-user uses. 

Note on temporary Function
--------------------------

Are allowed, while code coming from generation from executed code inside member of Fnct.D and not externally if they are not coming from Python execution of Python-Code or coming from mechanism from SQlite to extract arbitrary stored Shell-code conserved in TEXT format. SHALL HAVE a unique-ID in form or UUID generated in time based format. Application uuidgen with option '-t' is FLAVOURED to produce UUID Time-based Temporary ID. Python with following syntax is ACCEPTED, And at a future stage requesting from RPC Call implicitly using Socket to server will be used. 

.. code:: shell
	
	echo 'from uuid import uuid1 ; print uuid1()' | python2.7

OR

.. code:: shell
	
	uuidgen -t


Typically temporary function will own structure like this : 

.. code:: shell
	
	### Temporary ID requested from python: 
	echo 'from uuid import uuid1 ; print uuid1()' | python2.7
	### 63bff8cc-4fc9-11e3-98a2-001b3875b29c
	
	### Temporary Function name Look-like. 
	__63bff8cc4fc911e398a2001b3875b29c() { echo "Test"; }
	
This bring a << propos >>, and Mechanism Generating Temporary Function name SHALL

1-	Having name in memory and/or mechanism to store and retreive temporary 
	function name .

2-	Managing function name and HAVE-TO erase it's temporary function name existence 
	after the end of it's life cycle. 

According to a life-cycle it's open proposition and enhave it's endocrinement of this library being part of /etc/init.d position. Having switches --start-services also mean a part of a work like following application AgentLoader are active and setup correctly a services telled SSH piped instruction onto external access indeed to promote a mechanism to stop it's fellow action with --stopservices. 

In this conformance willing to agree a presence of a life-cycle mean at the end of a life cycle ( action to stop a fellow action to take end ) by removing data, variable, open-transaction-layer out of this terminal shell and consider the end of this services. 

According to a Short-Action meaning Start-Services is only one-shoot or also promoted by uses of --compword a second-state of services and Active-derivated Helper may own temporary function end. Ending It's life and ending any living temporary function, data, structure and mechanism to end on --stopservices call . 

And naming and convention from Temporary Function for Internal Communication layer a.k.a. Prefixed-Variable

Convention in Paper Draft informations
--------------------------------------

Every Paper Draft informations is coming with a note, and a title. A Function name can follow a Paper Draft informations. The note is a UUID made by required type  of UUID ( Time-based UUID. ). Might optionnally mentioning the Function being related, or Methodology being applied or any Structural Design from Basic Programmtion rule being know from developper.

Paper Draft information Are information illegible after aggregation , correction and standardisation to be elligible for Documentation... Paper Draft informations will allow to talk about implementation inside Documentation, but not Documentation to reffer to a Paper Draft informations. Also being cleaned from joke and story , Documentation will not own any of these story-line of what creator inherit from this contribution. Finally Paper Draft informations will stay in last-page from  Fnct.D like a section to read in spare time and leisure from what time had  consolidate to offer so strong attribute to this methodology....  

What You'll need
================

This Document rely on uses of Bash. Uniformely implemented in Unix/Linux world, some OS like OSX does own equivalent and may support addition of bash. Development already reach almost 7 years and do Jump across  version 4.0 to 4.2 but latest version 4.2 is freeing limits toward Variables passing between function to standard variable and does limit local variable to grow or stay alive. Also requiring uses of python it stay on 2.7 minimalistic version. Also registration process require SSH and netcat to demonstrate evolution of CLI interaction with tools. Twisted have been streched to operable and is planned to be used. Twisted is python module and does extend safe communication is Fnct.D does extend it's management over network. Do people haven't experimented Terminal Jam or screen overflow with recurrent call during Shell development, experience have found usefull to log into a SSH or telnet to send kill signal. Which is constantly an object debatted here to not kill a procedure if our module respond to a Precise Dilectic to turn-it off on need. 

:Note: ae5dee26-6424-11e6-98a2-001e4c8856d6
:Title: Alternative to Netcat, Twisted module with SSHFunctionController 
:Method: Python Application to Deserve important bottle-neck not to create pumping problems

Since Tuesday 16 august 2016, Twisted module had come out, magically for my first SSHFunctionController. Twisted version 16.3.1 being present to implement a DoController functionnality in second stage, to render easier the SQlite3 Access by sending a PostCard registration during connection, the pre-draft version will soon only require the public and private key segment to avoid uses of password and will have ssh access with option to send command line. Praised long by Network Administrator, SSH with sending command are most wanted knowledge to access to a specific problems when this one have to be stopped. Eliminating need to connect, brow and type, ssh with one command embedded in the connection is just perfect. To visit Twisted please visit :

.. image:: https://raw.githubusercontent.com/priendeau/Fnct.D/master/images/Twisted.png
 :scale: 25% 
 :align: right
 :target: http://bit.ly/XSARm5

Uses of a makefile
------------------

A Special branch name 'MakeFileInstaller', let the user Take advantage of the installation in Developper mode. Being in draft mode, it offer multiples advantage like possibility to Install the Library as link-name inside /etc/init.d/Fnct.D instead of moving the whole directory name of your repository or even link the Fnct.D path to /etc/init.d to let it work. 

Making different it install various script, awk-script, shell script, source example and also Snippets. It only offer the Geany coders Snippets as simple example on how developping snippets to create Call_Argument structure, to add a Verbosis to your function. Most important one are script under name ZenityAssistantBuildForm, ZenityGetStdPrefixName, ZenityGetStdPrefixNameAll are script under some snippets that extract information from a Zenity Windows Text-Entry and parse it into line of code for Fnct.D syntax. 

Example like :

main_start_services  - Generate the sub-function __main_StartServices inside a function you want to developt.

block_switches       - Generate All the Switches based on call of --startservices, --stopservices, --get, --list.

SwitchMessages       - Add the default Switches message to your function, when --help is called

DocHelper            - Generate the Appropriate String required to create you Helper Message including
                       - Name helper
                       - Synopsis to talk about your function.
                       - Summary  to introduce about uses of your function.
                       - Description Explict description of your function and will to add all Prefixed-Variable description. 

build_form           - From 'Paper Draft informations', section ZenityBuildForm is a
                     compromising tool to read function definition allowing you to 
                     select a function by typing it's name inside the Zenity 
                     Text-Entry windows and a Zenity List will pop you the parameter 
                     to let you select which Prefixed-Variable are require to fill.
                     And Another windows following this will give you the space to
                     entre variable to fill and finally paste-it to your code location. 

funct_Verbosis       - Create a sub-function called Verbosis. Used in debug and general
                     echoing the information, this piece of code does prepare information
                     to be formater, tagged during a debug observation or simply echoed 
                     for future evaluation. This snippets is particular and uses Base64
                     Codec from a Shell script caller Base64Codec (available in 
                     MakeFileInstaller) to depack tge function and leave as-is this 
                     function without impacting on code pasting. Some may understand, 
                     pasting part of code to appear formated inside Geany require insert
                     extra Tab symbold '\n' and already existing tab inside the code 
                     require a double or tripple back-slash to appear as valid. Depacting
                     information from BAse64 fix this problem and may snippets FnctDSnippets
                     releave us for all pain from parsing.
                     
FnctDSnippets        - Futhermore FnctDSnippets is the name of the future Fnct.D 
                     Snippets-handler from Geany. It rather use the Zenity list handler
                     to provide a list of new features from Possible development. It will
                     include list of possible action and possibility to call a composed 
                     code stored by an UUID format where your query in a search will 
                     return it as code ready to paste it. Example of 

... And many more example are comming to enhance developping rapidly with Fnct.D .

Geany was choosed to be present in Ubuntu, many Debian distribution and being light
and taking less space than somes bigs others IDE's names. 
 
So Updating from branch 'MakeFileInstaller', will help you make this Library installed
promptly until the installer can provide you a fully compatible installation from 
package. 

For interested, makefile of this project is also a compiler helper to compile C/C++
source, Assembly from Gnu AS (Assembler). And in short term it should provide a 
pkg-config ( Debian's package config ), query that do have possibility from correct
query to store extracted Library link-name to be linked to your application. 

For the moment, make come also with a helper called :

.. code:: shell
	
  make helper 

Will give you this help. And continue to grow until everything will be finished. 
As description it give you the help, switches for help, and Target available. 
target 'install' should be the ultimate action to preprare the library to be 
linked to your environment as .bashrc configuration and not Init-Level services. 
And will add to your .bashrc some important loader, Function-helper.

Don't hesitate to use GitChckBranchEngine, to select a Branch and regulary 
updating your MakeFileInstaller branch if have at least installed it.

 
.. code:: shell
	
  make helper 


   make:

   Fnct.D Makefile to Developpers.
   Barely a method to easy-install the Fnct.D library and start making template 
   out of your code before making official sources...

   Intended for  Network Administrator  for fast  development or  compilation of
   widget. Network Administrator may use it for as an Easy way to determine role 
   and strength of environment configuration.

   Easy to use it use some function from Fnct.D and may install it upon your 
   decision.

   Intended fot Developpers for studying mechanisms of many ABI at once, it uses
   Fnct.D to  elaborate  observations of Linux platforms. Having Developped this 
   top Makefile to  allows  compilation of  widget  for simple  uses  it  barely 
   cumulates  Assembly / Assembler effort  to compare C  code to  Assembly  and 
   'vice versa'. It's  role to take a  decompiled Executable to an  assembly is 
   possible with GCC compiler, Gnu AS (Assembler) and Gnu objdump (Object dumper) 
   and Gnu gdb as well. 

   This is also another copyleft license for software and other kinds of works. 

   Delivered  examples from  this makefile are simply work-around and not deserved 
   to produce hacking, hack or Denial of Services.  Theses code  are all available
   in Canadian library.  Theses example are  showed and  demonstrated by former in
   educational in computer  science and do  deserve the logic you should have left
   schools with before starting  here... Why are we getting this once, as topology
   to your knowledge...

   Suggestion:
    This Makefile being universel for Fnct.D project, linking it to another source
    path will require to link (signed_file.mk Fnct_D.mk) to be linked too. In 
    advantage to linking this Makefile you may conserve Library from pkg-config
    query unless you are not calling the clobber . (*4)

   Target:

    install / uninstall : Allow installing Fnct.D / un-installing Library.

    clean               : Clean several object and binary from thi project.
    
    pkg-config-browser  : a plugin to browse application pkg-config and 
                retain library from this application.
     check_signature     : 
   Prefixed Variable:
     DISPLAY_GOAL=1      : Display the goal used during make pass. 
     KEEP_BIN=1          : During a clean passes, don't erase binary in 'bin' path
    C/C++/Asm related options         
     ABI32=1             : Allow passing to LD/GCC/AS/CPP 32-bit ABI.Default is 
                           64-bit ABI, linux-gnu x86_64
    Assembly related options
     ASM_ENTRY_FUNC=1    : ASM/S Source global function using generally '_start'  
                           mainly. Some using ASM file from gcc may have    
                           'main' instead (easier uses of unistd call)
                           This change it for 'main' and impact
                           GDB_GET_FUNCT_FROM_SOURCE.
     DECOMPILATION=1     : (*)Have notice Experimental switch,decompile
                           executable from object and uses objdump 
                           with mixed code.
   Package Config Variable:
    PKG_CONFIG_QUERY    : Used as Text Query to fill. Should include name
                           or part of the name of the package. 
                           This target should support many package being
                           passed with space or comma separated value. It
                           will return all the value. 
     PKG_CONFIG_LIB=1    : Will add your query to common CFLAGS/AS_FLAGS
                           and any compilation will Link against declared
                           library. Require to make clobber to clean the 
                           library handler. 
   Debugging purposes    :
     RUN_WITH_DEBUGGER=1 : Instead of running the application it load the GDB.
                           - This mean having all debugging symbols require. 
                           ASSEMBLY_GSTAB definition .
     ASSEMBLY_GSTAB=1    : (***) Have notice This is the default Symbol set 
                           offered to debug with.
                          
     GDB_GET_FUNCT_FROM_SOURCE=1 (**)Have notice
                         : Allow makefile searching function name
                           for Assembly file only.
     WITH_ARG=1          : Pass all argument to GDB ()
     
   Passing Argument to make toward GDB.
     - Are comma separated value ',' (CSV).
     - Use StrArg, and overall variable should be quoted.   
     ex:
       StrArg="Arg1,Arg2" ASSEMBLY_GSTAB=1 RUN_WITH_DEBUGGER=1 make
                          
   *Notice DECOMPILATION: Also require to append to your executable
    name 'decompile', as example : 
     DECOMPILATION=1 ABI32=1 make cpuid32.decompil
    (*end of notice)
   **Notice GDB_GET_FUNCT_FROM_SOURCE: Does produce a .gdb target file
     ex: RUN_WITH_DEBUGGER=1 make envvars ; will produce envvars.gdb  
     Discovered Assembly with AS support function starting with '.'
     which is not compatible with gdb., regexp in makefile 
     REGEXP_FIND_FUNC_NAME is adapted to work detecting '.function'
    Code generation, is twice simple, as example from C source uuid.c
    (*end of notice)
   ***Notice ASSEMBLY_GSTAB: This options added all alone will add gstab
     to produce assembly Code:
    make uuid.S           
     In case of source compilation with option '-gstab' it's reported by 
     gcc documentation to may not work or being compatible, but effort 
     is present for this makefile.
    (*end of notice)
   (*4)Notice Clobering services and PKG_CONFIG_QUERY services is partially
     implanted and (SHOULD NOT) give exactly what it should until this 
     notice is not retreived.
     To make a specific available target, use make compiled to show 
     available target       
    (*end of notice)


Description
===========

While bash start to offer more than conventional Shell, memory start to be very affordable, many Boot-loader start to offer socket for Bash-like behavior and will be soon be part of Posix conformance. Pre-Development from Command-line automation, and creation of Fnct_lib was a moderated Sub-API, a Wrapping in shell automate management and lead to well written version introduced with fnct_debian_lib and linked sub-shell lib.


Synopsis
========
This will serve to generate development script and auto-creation-script for test purposes and automated services for many U*nix and Linux environment. 

By The design, it will offer safe-container and safe method of transferring information in management of services and will be able to perform gain in check-up in stable environment by skipping check in Read-only mode of certain loading... Like, If RO-File-system[*] is older than creation date, it will be able to query OS to add trigger to perform less operation and load information faster in subsequent startup... Idem with services with less touched file configuration. It will be able also to increase maneuverability of uncommon option like Disk-To-Stream accessibility and Memory-To-Stream Uses, aka Network-Booting, Network Memory Pool and Network Application Ground-up.

[*] RO: Read-Only Filesystem

Also , Methodology of implementation is strict and observe Object-oriented transcription in transformation of many available Byte-coded of IDL re-interpretation in super-tiny scaling...

Certain option will be implemented in second-stage of development, and creating wrapper for UN-accessible Gpl-services or fast-implementation prototyping, switch for DTD extraction of Shell-Application program and XML Verbosis and XML object induction to help development of functionality implementation in fnct_list .

This Function-Library is sensitive to uses of UUID, current and future development will own critical application with simple name. Called GetUUID this application will issue UUID and will manage it's presence by storing it properly. 
 
Using a specific type of mechanism to store the informations, second-hand function will invoke and  or query the informations toward this created idioms inside this library. 
 
As example BodyFunc function will depend of registration of the body and it's root require uses of UUID. Managing the idiom is important to store definition of many IF/ELSE condition used in conjunction of BoolVarTestVarCreation and will create registration sequence where any new sequences will give another new body for execution. 


Arguments
=========

Level-1 Argument, A Deference-In :
	
Are Mostly Prefixed-variable to be understand and replacing 90% of switched uses into Services declaration and Services Information. Services Establishment like --compword is a future feature available soon after 2013-09-08 where all function will own word completion activation. 

Are Certain GetVarReference play an important part in realization of __GetVarReferenceList since Outputting Internal Variable for ``poking`` the content of function is an important part of WHAT IS required to create builder without porting the function structure into hermetic container called Black-Boxes , or making reflection. SHALL GetVarReference being a pivot in User Knowledge database, allowing user to seek for action thru Prefixed-Variable showed out from GetVarReference being present in bottom block  of our function design to help user having the strict minimum of our function interaction. Our set's of function calling --help is directly linked to this part. SHALL GetVarReference also have it's Documentary structure involving uses of String of appropriate name like Chapter name NameHelper, Synopsis, Summary, Description and Prefixed-Variable named [ GVRIs + Chapter ] Name can increase chance of understanding your memoize[1] or you documentary code being present on calling the helper aka --help switches and having chance to make it lasting y having Documentary structure within your development. Shadowed by simple variable action.  

Are conform owning aggregation of couple function having strict action and attended resultat. GetOtherDate is also commonly used and correctly defined to accept Posix formated date and having possibility to handle multiple range of creation and can answer to some criterion. 

Are HAVING structure and environment to allow quantum-state action to wide-action, LibLoader having strict method to call and rely on Posix shell function aggregation allow our set's being more and more stable and anomalies are detectable. Quantomic action like proof of unicity by using corpus of UUID and mechanism to protect writing in some design like md_cd does allow presence of unique action and dismissing uncertainty event corrupting information. md_cd and UlimitSystem and important action on environment to change system performance ( UlimitSystem ) and change status of backuping information ( md_cd ), to own 'preservance' by protecting write of log and preserving integrity of start-services / stop-services ( UlimitSystem ) we are working to proove them able to perform some vision anticipated HAS problems of loss of process beyond scope day and lost of information FROM lack of directory survey, unifying simple tool DOES have an impact on system life-cycle. 

This is why Fnct.D is a good Dialect on keeping thing alive and not only working. 

Level-2 Argument, A Reference-In :

Based on Python optparser we do see application were growing in number of switched while some other Visual environment like X Window did not and also profit from Posix Shell Variable to let the environment to grow-up. Having multiples screen port are Matter if ${DISPLAY} starting from one display on DISPLAY=:0.0 on local port it can grow over different connection setup-ed by X Window and will emerge in multiple region to other port like distant connection. All visible with couple Variable. Pre-Fixed Variable are mastered by COMPILER, Link-Edition ( LD ), Execution Layer ( a.out, ELF ... ) and are transferring theirs informations from the system through POSIX variable. Fnct.D does own mechanism to reflect the action of Function and Sub-Function in a quasi Objective method where it's  need to reduce effect of black-boxes from a function imply extras and costless action to allow safe manipulation of data during this attempt to reflect the action of an object of arbitrary safe container reserved for an embedded action. This re-entry should be easy and have it's structure being easy to reproduce. Some function does have internal-function being present and callable from Top-Function and deliver internal action by simply adding Pre-fixed variable binding the action of requiring only a part of the action and not the whole function. GetterByLineData is one of them, and ZenityBuildForm/ZenityPrefixedVarSelection is another one. one working for the integrity of data, MUST having scheme to call a strict action like taking the root-of-certification in a file and allowing it to create a new one. Other are working with descendant of __GetVarReferenceList allowing to push Factorization of function by providing a way to know Pre-Fixed Variable to use and generating command for understanding what your are creating . 

[1] Memoize, from memoization : The term "memoization" was coined by Donald Michie in 1968[5] and is derived from the Latin word "memorandum" ("to be remembered"), usually truncated as "memo" in the English language, and thus carries the meaning of "turning [the results of] a function into something to be remembered." While "memoization" might be confused with "memorization" (because they are etymological cognates), "memoization" has a specialized meaning in computing.


Invocation
==========

Likewise Bsd Middle-age, a sub-entity was existing inside /etc/init or /etc/init.d and desapear or move inside /usr This design exist inside /etc/init.d/Fnct.D to  establish a __future__ development for integration inse loader and initrd for shell management and Integration. 

The original mechanism /etc/init.d/Fnct.D/fnct_lib allow loading of sub library.  Most important are fnct_debian_lib _sub_jack_script _sub_Git _sub_ssh_handler all available inside the /etc/init.d/Fnct.D Path .

Example 1 :

.. image:: https://raw.github.com/priendeau/Fnct.D/master/images/fnct_lib_loading.png
		:target: https://github.com/priendeau/Fnct.D#Invocation



This is a result from loading /etc/init.d/Fnct.D/fnct_lib from a .bashrc 

Example 2 :


.. image:: https://raw.github.com/priendeau/Fnct.D/master/images/fnct_lib_loading_2.png
		:target: https://github.com/priendeau/Fnct.D#Invocation-2



This is a result from loading /etc/init.d/Fnct.D/fnct_lib With specified version of function. this
case suggest having eliminated CallArgument / __Call_Argument by calling the library with :

- versionCA   Version:0.0.0 <--- this is responsible of dark-Yellow message.
- versionGCT  Version:0.0.1
- versionGSPN Version:0.0.2
- versionTP   Version:0.0.2
- versionGPI  Version:0.0.1


	
Example of .bashrc configuration file with fnct_lib and some usefull widget  configured thru uses of alias. 

.. code:: shell
	
	### Found on Top of my .bashrc 
	. /etc/init.d/Fnct.D/fnct_lib 


	export PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u\[\033[01;36m\]@\[\033[01;32m\]\h\[\033[01;34m\] \W \$\[\033[00m\] '

	### 
	### Some common thing found inside a .bashrc example
	### 
	alias ls='ls -AlSr --color=tty' ; 
	alias mkdir='/etc/init.d/Fnct.D/md_cd' ;
	
	
	### 
	### My Creation-Path Services, adding information inside ${HOME}/.ArrayMdCd
	### effective enough to create one at the time Path and store the information
	### of date-creation and location created and dumping file .gitignore, README.rst
	### MANIFEST.in inside every creation... Useful to store story-board, File-list
	### and avoiding to concurrent temporary file or useless file...  Also 
	### /etc/init.d/Fnct.D/md_cd own an quantomic action, many selfuser may use 
	### different terminal and will have to wait until first one had done to use
	### the mkdir, md... Before another user can use it... so ${HOME}/.ArrayMdCd
	### can not hold uncoherent information or incomplete one . 
	### 
	alias md='/etc/init.d/Fnct.D/md_cd' ;
	alias iptables-list='iptables -L --numeric --line-numbers' ;
	alias synaptic-search='sudo -s synaptic-search' ;
	alias synaptic-up='sudo -s /usr/sbin/synaptic --update-at-startup'
	alias apt-src-install='sudo -s apt-src-install' ;
	alias gedit='/usr/bin/pluma' 
	
	### 
	### This is example is famous about configuring the ZenityShellEval Windows Resolution.
	### 
	alias ZenityShellEval='ZSEWindowWidth=1000 ZSEWindowHeight=700 ZenityShellEval'

	
	### 
	### This is example know to be effective, adding a snapshoot every time the 
	### application is called to store Debian package into my personal storage.
	### 
	alias PackageRepositoryMgmt='PkgRepoMgmtAddPkgLst=True PkgRepoMgmtRepository=/media/COMST500GB/Linux-Debian/archives/Mint-15_x86-64/UnderscoreXDevlpt-001 PkgRepoMgmtReposIndex=/media/COMST500GB/Linux-Debian/archives/Mint-15_x86-64/UnderscoreXDevlpt-001/index PackageRepositoryMgmt'
	alias PackageRepositoryRest='PRRBackupPath=/media/COMST500GB/Linux-Debian/archives/Mint-15_x86-64/UnderscoreXDevlpt-001 PkgRepoMgmtReposIndex=/media/COMST500GB/Linux-Debian/archives/Mint-15_x86-64/UnderscoreXDevlpt-001 PackageRepositoryRest' ;
 
 
 
| Using this library inside a shell script is unfortunately one of the most important goal developped here. The example 
| within this code give example like md_cd a mkdir with ability to create a log entry of date creation and on delivery 
| date and published data inside this document will explain it's function and member used inside this library. The most
| easiest way is to call the Library  before  you start using  function from this bundle . Also  developping  your  own 
| function inside this shell-script  is up-to you but we  are inviting developper to  respect some easy step to develop, 
| Pre-fixed variable header to allow  being recognized by  some important member like GetVarReference, or adding  extra 
| Pre-fixed  Varaia

本源码包内暂不包含可直接显示的源代码文件,请下载源码包。