Last week I wrote about fast batch deletions. In this post I’ll show how to do the same for modifications.
Let’s assume we want to replace the ‘State’ property with ‘CA’ and CostCenter with 123 for all records where the ‘City’ is ‘San Francisco’. The recommended DevExpress approach would be something like the following:
The problem with the above code is that every record must be loaded and then an individual UPDATE command is generated for each modification. This is necessary for the business logic to be applied correctly (such as the code in methods such as OnSaving()). It is also necessary to handle record locking.
If you know that your objects do not require any of this processing, you can use use direct SQL as described in the XPO documentation. This however requires knowledge of the underlying database table and is not very versatile, (although the DevExpress.Data.Filtering.CriteriaToWhereClauseHelper() can help if you choose this route).
However, there is a method similar to the one described in the previous post which is equivalent to the direct SQL approach, but is much easier to use. The approach makes use of an extension method on the Session class.
Example
Since the extension method is somewhat more complicated than for the Delete case, I will start by showing an example of use before drilling into the supporting code.
The Update method takes an Expression<Func<T>> as the first parameter which allows us to pass in an anonymous type which serves as a template for the modification. This way we get strong typing for the property values.
publicclassPropertyValueStore:List<KeyValuePair<XPMemberInfo,Object>>{}publicstaticclassSessionExtensions{publicstaticPropertyValueStoreCreatePropertyValueStore(XPClassInfoclassInfo,MemberInitExpressionmemberInitExpression){PropertyValueStorepropertyValueStore=newPropertyValueStore();/// Parse each expression binding within the anonymous class. /// Each binding represents a property assignment within the IXPObject./// Add a KeyValuePair for the corresponding MemberInfo and (invoked) value.foreach(varbindinginmemberInitExpression.Bindings){varassignment=bindingasMemberAssignment;if(binding==null){thrownewNotImplementedException("All bindings inside the MemberInitExpression are expected to be of type MemberAssignment.");}// Get the memberInfo corresponding to the property name.stringmemberName=binding.Member.Name;XPMemberInfomemberInfo=classInfo.GetMember(memberName);if(memberInfo==null)thrownewArgumentOutOfRangeException(memberName,String.Format("The member {0} of the {1} class could not be found.",memberName,classInfo.FullName));if(!memberInfo.IsPersistent)thrownewArgumentException(memberName,String.Format("The member {0} of the {1} class is not persistent.",memberName,classInfo.FullName));// Compile and invoke the assignment expression to obtain the contant value to add as a parameter.varconstant=Expression.Lambda(assignment.Expression,null).Compile().DynamicInvoke();// Add the propertyValueStore.Add(newKeyValuePair<XPMemberInfo,Object>(memberInfo,constant));}returnpropertyValueStore;}publicstaticModificationResultUpdate<T>(thisSessionsession,Expression<Func<T>>evaluator,CriteriaOperatorcriteria)whereT:IXPObject{if(ReferenceEquals(criteria,null))criteria=CriteriaOperator.Parse("True");XPClassInfoclassInfo=session.GetClassInfo(typeof(T));varbatchWideData=newBatchWideDataHolder4Modification(session);intrecordsAffected=(int)session.Evaluate<T>(CriteriaOperator.Parse("Count()"),criteria);/// Parse the Expression./// Expect to find a single MemberInitExpression.PropertyValueStorepropertyValueStore=null;intmemberInitCount=1;evaluator.Visit<MemberInitExpression>(expression=>{if(memberInitCount>1){thrownewNotImplementedException("Only a single MemberInitExpression is allowed for the evaluator parameter.");}memberInitCount++;propertyValueStore=CreatePropertyValueStore(classInfo,expression);returnexpression;});MemberInfoCollectionproperties=newMemberInfoCollection(classInfo,propertyValueStore.Select(x=>x.Key).ToArray());List<ModificationStatement>collection=UpdateQueryGenerator.GenerateUpdate(classInfo,properties,criteria,batchWideData);foreach(UpdateStatementupdateStatementincollection.OfType<UpdateStatement>()){for(inti=0;i<updateStatement.Parameters.Count;i++){Objectvalue=propertyValueStore[i].Value;if(valueisIXPObject)updateStatement.Parameters[i].Value=((IXPObject)(value)).ClassInfo.GetId(value);elseupdateStatement.Parameters[i].Value=value;}updateStatement.RecordsAffected=recordsAffected;}returnsession.DataLayer.ModifyData(collection.ToArray<ModificationStatement>());}}
Limitations
There is currently no way to refer to another field within the assignment expressions - you can only set the value to an OperandValue. So you cannot do
123456789
uow.Update<MyObject>(o=>newMyObject(uow){// Does not Compile !!!Property1=o.Property2,// Neither does this !!!Property3=o.Property3+1},null);
In order to fix this, the evaluator has to be of type Expression<Func<T, T>> instead of Expression<Func<T>>, and then you can use expression trees to get an assignment expression. But then there is no way to pass it to a DevExpress UpdateStatement.Parameter as an OperandValue.
When deleting a collection of objects, DevExpress recommends using Session.Delete(ICollection objects). This has the same effect as calling the Delete() method for every object in the collection so that the business logic is applied correctly. The business logic in this context refers to code such as that in the OnDeleting(), OnDeleted() methods, but it also includes the clearing of references to the object by other objects. This approach is slow, but ensures the integrity of the data.
If you know that your objects do not require any of this processing, you can use use direct SQL as described in the XPO documentation. This however requires knowledge of the underlying database table and is not very versatile, (although the DevExpress.Data.Filtering.CriteriaToWhereClauseHelper() can help if you choose this route).
An alternative is to use the extension method below:
This achieves the same as result and similar performance to direct SQL, but with cleaner syntax and support for criteria. Also, since it uses a ModificationStatement[], it works with a remote IDataStore.
On a normal keyboard, I can type at about 60 wpm, but I only use three or four fingers and I have to periodically glance down at the keyboard. I hope my new keyboard forces me to learn to touch type properly. Various coders have written on the subject - Jeff Atwood says we are typists first; Phil Haack opts for Dvorak.
The Das Keyboard is beautiful. It’s certainly heavier and noisier than other computer keyboards but with such nicely-weighted quality keys that it is a pleasure to type on. At the moment I am struggling, especially when it comes to brackets () [] {} and punctuation symbols. Looking down is of no use whatsoever.
I’ve been trying sometypinggames too. Suggestions welcome. My typing speed is currently about 20 wpm with the new keyboard, so I have some catching up to do…
On Saturday I attended an excellent discussion at the Tate modern which was part of a series of lectures on Topology. The first part was a screening of Au Bonheur des Maths, a film by Raymond Depardon and Claudine Nougaret which is a collection of portraits of famous mathematicians describing beauty in mathematics. The second part was a discussion on the same topic between Sir Michael Atiyah and Cédric Villani, both winners of the Fields Medal. You can read a review of the event at Tony Mann’s maths blog.
I particularly enjoyed witnessing world-class mathematicians in the flesh and learning a little about their day-to-day work. Sir Michael Atiyah is a jovial fellow in his 80s who speaks extremely quickly as if his mouth is trying to keep up with his thoughts. His passion for mathematics is infectious.
In stark comparison Cédric Villani is a flamboyant Frenchman who was dressed in a three-piece suit and a cravat. He looks more like a musketeer than a mathematician. He was wearing an ornate and sparkly jewel in the shape of a spider on his lapel (and apparently always does). He speaks very good English but with quite a thick French accent. He has a mischevous sense of humour and an endless enthusiasm. Check out his great TEDx talk.
Altogether the atmosphere was one of relaxed, humorous, intellectual entertainment. Both mathematicians drew on anecdotes from the history of mathematics. It was clear that both of them derive considerable pleasure from sharing their knowledge and experiences.
There were many aspects of their work that I felt I could relate to as a software developer: looking for answers sometimes feels like you are exploring a valley and sometimes like you are fighting a battle. Often the strict constraints of the system force you to be more creative to break away from them and towards new discovery. Being stuck is a common and natural occurrence.
One of the interesting digressions was regarding a famous question in topology - how to turn a sphere inside-out (which is known as eversion). Apparently, when Arnold Shapiro described his work on the problem to Bernard Morin who is blind, Morin was able to visualise the transformation, but Shapiro had the distinct impression that he was not taking any particular point of view. Perhaps this is similar to the when you think of holding a sphere in your hands rather than looking at it.
If you have a few minutes, you can learn how to turn a sphere inside-out in the following amazing video.
Sir Michael closed the discussion with the following quotation:
My work always tried to unite the truth with the beautiful, but when I had to choose one or the other, I usually chose the beautiful.
This post is part of an ongoing series about robots, past and present. See Musical Interlude.
The Mars Opportunity Rover
Opportunity landed on Mars in January 2004. It is currently the only active robot on any planet other than Earth (until the scheduled arrival of Curiosity in August 2012). The mission was originally supposed to last 90 days.
The rover contains pieces of the fallen World Trade Center which were turned into shields to protect cabling.
This photo of the Endeavour Crater on Mars was taken by the Opportunity rover on March 9, 2012.
Hardware - if it ain’t broke, don’t fix it
NASA prefers hardware that has been used successfully on previous missions, even if it means compromising on performance.
The computer on board is a RAD6000. It is single board computer designed for the US Air Force by BAE Systems with a 32-bit processor based on the IBM RISC single chip CPU. It has 128 MB of RAM.It is radiation hardened so that it can withstand the harsh environment of space. The RAD6000 is reported to cost between USD 200,000 and USD 300,000.
It’s a venerable board. We’ve used it ever since the Mars Pathfinder Mission what — about 12 years ago, 14 years ago?
Lifecycle
The software on a Mars lander is expected take 3-4 years development.
It’s designed according to a Waterfall model split roughly as follows:
9 months requirements definition
12-18 months in design phase
12-18 months test phase
Launch!
Software
One of the things about the software, one of the unique aspects about working software on a spacecraft is it’s the only part of the system that you can change after launch.
The operating system is VxWorks. The software on board the spacecraft is entirely in C. The software on the rover is about 650,000 lines of C.
#include void main() { printf("Hello Mars\n"); }
No GitHub. Most space technology software is considered arms technology, so it cannot be made open source.
The NuGet team just released NuGet 1.8. Unfortunately there is an issue when upgrading it via the NuGet package manager. The following message appears and the installation fails.
VSIXInstaller.SignatureMismatchException: The installed version of 'NuGet Package Manager'
is signed, but the update version has an invalid signature. Therefore, Extension Manager
cannot install the update.
at VSIXInstaller.Common.VerifyMatchingExtensionSignatures(IInstalledExtension installedExtension,
IInstallableExtension updateExtension)
at VSIXInstaller.InstallProgressPage.BeginInstallVSIX(SupportedVSSKU targetAppID)
As explained in the NuGet release notes, one solution is to uninstall NuGet from the VS Extension Gallery before reinstalling. Note: If Visual Studio won’t allow you to uninstall the extension (the Uninstall button is disabled), then you likely need to restart Visual Studio using “Run as Administrator.”
Another alternative (courtesy of Jeff Handley) is to install this Visual Studio hotfix and the next time you start Visual Studio, updating via the package manager will work.
One of the projects I work on uses the validation module of the eXpressApp Framework (XAF). Since the business logic is complex, there are many validation rules defined using the [RuleFromBoolProperty].
One of the recurring problems occurs when the signature of the associated property is incorrect. Consider the following:
1234567891011
[RuleFromBoolProperty("Invoice_IsAmountGreaterThanZero", DefaultContexts.Save, "Invoice amount must be greater than zero.", UsedProperties = "Amount")]publicboolIsAmountGreaterThanZero{get{returnAmount>0;}}
Notice that the rule is declared public. This causes the getter to be executed when it is not required (see the note in the documentation). However another problem is that the default behaviour for public properties of XPObjects is to persist them to the datastore which means the application will attempt to create a new column called IsAmountGreaterThanZero.
Instead, either property should be declared protected or the property should also have the [NonPersistent] and [MemberDesignTimeVisibility(false)] attributes as well.
Consequently, I wrote the following unit test which will detect any properties which have the [RuleFromBoolProperty] attribute. This is not really a unit test, rather a sort of meta-test
123456789101112131415161718192021
[TestFixture]publicclassValidationRuleDeclarationMetaTests{ [Test]publicvoidTest_RuleFromBoolPropertyDeclarations_ShouldBeProtectedVisibility(){varassemblies=newAssembly[]{typeof(MyObjectAssembly).Assembly};varinvalidProperties=assemblies.SelectMany(a=>a.GetTypes()).SelectMany(t=>t.GetProperties(BindingFlags.Public|BindingFlags.Instance)).Where(p=>p.GetCustomAttributes(typeof(RuleFromBoolPropertyAttribute),true).Any()).Select(p=>String.Format("{0}.{1}",p.DeclaringType,p.Name)).Distinct();Assert.IsFalse(invalidProperties.Any(),"There are 'public' properties with the [RuleFromBoolProperty] attribute. "+"These should be 'protected' instead. "+"The invalid properties are: "+String.Join(", ",invalidProperties));}}
Now the build will fail whenever a validation property signature is incorrect.
This post is part of an ongoing series about robots, past and present. See Robot Egyptologists.
Robot quadcopters playing the James Bond theme tune.
There is no human controlling the robots. Each one has been assigned a series of points in space that it must reach at specific times. The robots are aware of each other and avoid collisions.
This post is part of an ongoing series about robots, past and present. See Skiing on Mars.
Mysterious Shafts in the Great Pyramid of Giza
Various robots have been used to explore secret tunnels in the Great Pyramid of Giza.
The tunnels were discovered in 1872 by Waynman Dixon, a British engineer who was helping with a project to undertake accurate measurements of the pyramid. He noticed a crack in the southern wall of the Queen’s Chamber and discovered a shaft hidden behind the masonry, as well as a similar shaft in the northern wall. The shafts are very narrow (20x14cm) and so there was no feasible method of exploring them until recently. The shafts in question are shown in red on the diagram above. There are two similar shafts in the King’s Chamber above it, but these have exits on the outside of the pyramid.
Enter the Robots
In 1992-3, a series of robots were sent into the shafts to explore them. The most advanced of these was Upuhaut-2, built by a German engineer Rudolf Gantenbrink. It was able to crawl up the southern shaft 63 metres to reveal a stone slab blocking the shaft. The slab has two copper clasps and looks like some sort of door.
In 2002, another robot, the Pyramid Rover designed by iRobot of Boston (the people behind the Roomba vacuum cleaning robot) in collaboration with the National Geographic Society took the exploration further by drilling a hole through the slab and inserting a miniature fibre-optic camera. They discovered a space of a few inches followed by … another door!. The same robot was also able to explore the northern shaft which twists and turns more preventing earlier robots from getting very far. It too ends up with a door approximately 63 metres from the entrance.
The Djedi Project is a team of International and Egyptian experts currently dedicated to the further robot exploration of the tunnels via robots. In 2011, it managed to drill a similar hole in the door at the end of the northern shaft. The robot was also equipped with a miniature snake camera which was able to view the small chamber beyond the door and, in particular, some reddish hieroglyphs. Here’s a video from one of the sponsors of the project.
In May 1971, the USSR launched two rovers to explore Mars. They were to move on skis (!!) while connected to the landers with 15m umbilical cables.
The first one crash landed. The second landed sucessfully but failed twenty seconds after landing and never moved. The reasons are unknown although the landing took place in the middle of a dust storm. The base module did manage to transmit about 20 seconds worth of the first ever photograph of the surface of Mars, shown on the left here. According to the Soviet Academy of Sciences there is nothing, horizon or otherwise, identifiable in this photograph.
The rover itself, although never deployed, was equipped with sensors to detect obstacles (the two foremost metal bars in the photograph above). The rovers were somewhat autonomous and capable of navigating obstacles. The Soviet engineers were aware they might not have enough time for a remote-controlled operation of the rover (one-way communication takes between 4 and 20 minutes to Mars).
Receiving a signal from another planet, even for a few seconds is such an incredible achievement. It’s difficult to imagine what it was like being a programmer in those days, under that regime, but it must have been dramatic for those involved. Hope, fear, pride, joy and perhaps disappointment and regret. All because of a chunk of metal sitting in a red dust storm 141 million kilometres away.
Analog Computers
Apparently any programming would have been done on analog computers. An analog computer does not require ‘software’ in the sense we use the term today. Instead the computer evaluates an analog, a ‘model’ which corresponds to a given problem. You create the model by describing differential equations which correspond to the problem and then deriving a circuit corresponding to these equations. This is the ‘program’ of the analog computer. The computer itself has no memory and no algorithmic program control.
Watch a demonstration of how to program an analog computer to simulate a mass-spring system. It’s a far cry from my day job.


Class: Aws::SsmSap::Types::RegisterApplicationInput
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
|
Class Chain:
self,
Struct
|
|
|
Instance Chain:
self,
::Aws::Structure ,
Struct
|
|
| Inherits: |
Struct
|
| Defined in: | gems/aws-sdk-ssmsap/lib/aws-sdk-ssmsap/types.rb |
Overview
Constant Summary
Instance Attribute Summary
-
#application_id ⇒ String
rw
The ID of the application.
-
#application_type ⇒ String
rw
The type of the application.
-
#credentials ⇒ Array<Types::ApplicationCredential>
rw
The credentials of the SAP application.
-
#instances ⇒ Array<String>
rw
The Amazon
::Aws::EC2
instances on which your SAP application is running. -
#sap_instance_number ⇒ String
rw
The SAP instance number of the application.
-
#sid ⇒ String
rw
The System ID of the application.
-
#tags ⇒ Hash<String,String>
rw
The tags to be attached to the SAP application.
Instance Method Summary
::Aws::Structure
- Included
| #to_hash | Alias for Aws::Structure#to_h. |
Instance Attribute Details
#application_id ⇒ String
(rw)
The ID of the application.
# File 'gems/aws-sdk-ssmsap/lib/aws-sdk-ssmsap/types.rb', line 1035
class RegisterApplicationInput < Struct.new( :application_id, :application_type, :instances, :sap_instance_number, :sid, :, :credentials) SENSITIVE = [] include Aws::Structure end
#application_type ⇒ String
(rw)
The type of the application.
# File 'gems/aws-sdk-ssmsap/lib/aws-sdk-ssmsap/types.rb', line 1035
class RegisterApplicationInput < Struct.new( :application_id, :application_type, :instances, :sap_instance_number, :sid, :, :credentials) SENSITIVE = [] include Aws::Structure end
#credentials ⇒ Array
<Types::ApplicationCredential> (rw)
The credentials of the SAP application.
# File 'gems/aws-sdk-ssmsap/lib/aws-sdk-ssmsap/types.rb', line 1035
class RegisterApplicationInput < Struct.new( :application_id, :application_type, :instances, :sap_instance_number, :sid, :, :credentials) SENSITIVE = [] include Aws::Structure end
#instances ⇒ Array
<String
> (rw)
The Amazon ::Aws::EC2
instances on which your SAP application is running.
# File 'gems/aws-sdk-ssmsap/lib/aws-sdk-ssmsap/types.rb', line 1035
class RegisterApplicationInput < Struct.new( :application_id, :application_type, :instances, :sap_instance_number, :sid, :, :credentials) SENSITIVE = [] include Aws::Structure end
#sap_instance_number ⇒ String
(rw)
The SAP instance number of the application.
# File 'gems/aws-sdk-ssmsap/lib/aws-sdk-ssmsap/types.rb', line 1035
class RegisterApplicationInput < Struct.new( :application_id, :application_type, :instances, :sap_instance_number, :sid, :, :credentials) SENSITIVE = [] include Aws::Structure end
#sid ⇒ String
(rw)
The System ID of the application.
# File 'gems/aws-sdk-ssmsap/lib/aws-sdk-ssmsap/types.rb', line 1035
class RegisterApplicationInput < Struct.new( :application_id, :application_type, :instances, :sap_instance_number, :sid, :, :credentials) SENSITIVE = [] include Aws::Structure end
#tags ⇒ Hash
<String
,String
> (rw)
The tags to be attached to the SAP application.
# File 'gems/aws-sdk-ssmsap/lib/aws-sdk-ssmsap/types.rb', line 1035
class RegisterApplicationInput < Struct.new( :application_id, :application_type, :instances, :sap_instance_number, :sid, :, :credentials) SENSITIVE = [] include Aws::Structure end


Data Scientist - New York, NY
Viome is a wellness as a service company that applies artificial intelligence and machine learning to biological data – e.g., microbiome, and human RNA data – to provide personalized recommendations for healthy living. We are a fast growing, interdisciplinary team of experts in biochemistry, microbiology, medicine, artificial intelligence and machine learning.
We are looking for an experienced and independent Data Scientist in our NYC office. Joining a team of data scientists and machine learning engineers, you will analyze our unique biological datasets, modeling our customers’ health and finding new insights. Tasks will include developing custom models to understand the complex interactions between microorganisms, and demonstrating the relationship between certain biomarkers and various health outcomes. This role will give the right candidate an unparalleled ability to push the boundaries of microbiome research. Seniority will be determined based on the candidate’s experience.
This is a full-time, onsite position at our offices in New York City, NY.
Responsibilities:
Visualization and exploratory analysis of large datasets
Development of supervised models to predict diseases, symptoms, and other health outcomes
Definition of clear technical problems from high-level business requirements
Insight to determine the most fruitful approaches, and the motivation to explore them independently
Effective collaboration with our team of experts in biotech and healthcare
Presentation of technical results to a non-technical leadership audience
Technical writing, contributing to publications describing our findings
Skills & Qualifications:
4+ years professional experience in a data science/machine learning role
MS/PhD in Statistics, CS or related field
Thorough understanding of machine learning, ability to implement models from scratch
Probabilistic modeling, or optimization and numerical methods
Python (numpy, scipy, pandas), SQL
Be able to work independently and pivot quickly
Be able to thrive in a fast-paced startup environment
Viome is a 100+ person start-up offering a successful commercial product now in high growth. With offices in California, New Mexico, New York and Washington, we are looking to hire team members capable of working in dynamic environments, who have a positive attitude and enjoy collaboration. If you have the skills and are excited about Viome’s mission, we’d love to hear from you.


There is nothing you can configure here yet! Please contribute with new functionalities to
deezer-plus
and maybe in the future this page will have more options.


|
Border Surviellance Bot Group V
An attempt to model border surviellance using Firebird-V robot and Python
|
Public Member Functions | |
| def | open |
| def | close |
| def | makeDeviceName |
| def | inWaiting |
| def | read |
| def | write |
| def | flushInput |
| def | flushOutput |
| def | sendBreak |
| def | setBreak |
| def | setRTS |
| def | setDTR |
| def | getCTS |
| def | getDSR |
| def | getRI |
| def | getCD |
Static Public Attributes | |
| tuple | BAUDRATES |
Serial port implemenation for .NET/Mono.
Definition at line 26 of file serialcli.py.
| def serial::serialcli::IronSerial::close | ( | self | ) |
Close port
Definition at line 125 of file serialcli.py.
| def serial::serialcli::IronSerial::flushInput | ( | self | ) |
Clear input buffer, discarding all that is in the buffer.
Definition at line 180 of file serialcli.py.
| def serial::serialcli::IronSerial::flushOutput | ( | self | ) |
Clear output buffer, aborting the current output and discarding all that is in the buffer.
Definition at line 185 of file serialcli.py.
| def serial::serialcli::IronSerial::getCD | ( | self | ) |
Read terminal status line: Carrier Detect
Definition at line 230 of file serialcli.py.
| def serial::serialcli::IronSerial::getCTS | ( | self | ) |
Read terminal status line: Clear To Send
Definition at line 214 of file serialcli.py.
| def serial::serialcli::IronSerial::getDSR | ( | self | ) |
Read terminal status line: Data Set Ready
Definition at line 219 of file serialcli.py.
| def serial::serialcli::IronSerial::getRI | ( | self | ) |
Read terminal status line: Ring Indicator
Definition at line 224 of file serialcli.py.
| def serial::serialcli::IronSerial::inWaiting | ( | self | ) |
Return the number of characters currently in the input buffer.
Definition at line 145 of file serialcli.py.
| def serial::serialcli::IronSerial::open | ( | self | ) |
Open port with current settings. This may throw a SerialException if the port cannot be opened.
Definition at line 32 of file serialcli.py.
| def serial::serialcli::IronSerial::read | ( | self, | |
size = 1 |
|||
| ) |
Read size bytes from the serial port. If a timeout is set it may return less characters as requested. With no timeout it will block until the requested number of bytes is read.
Definition at line 150 of file serialcli.py.
| def serial::serialcli::IronSerial::sendBreak | ( | self, | |
duration = 0.25 |
|||
| ) |
Send break condition. Timed, returns to idle state after given duration.
Definition at line 191 of file serialcli.py.
| def serial::serialcli::IronSerial::setBreak | ( | self, | |
level = True |
|||
| ) |
Set break: Controls TXD. When active, to transmitting is possible.
Definition at line 199 of file serialcli.py.
| def serial::serialcli::IronSerial::setDTR | ( | self, | |
level = True |
|||
| ) |
Set terminal status line: Data Terminal Ready
Definition at line 209 of file serialcli.py.
| def serial::serialcli::IronSerial::setRTS | ( | self, | |
level = True |
|||
| ) |
Set terminal status line: Request To Send
Definition at line 204 of file serialcli.py.
| def serial::serialcli::IronSerial::write | ( | self, | |
| data | |||
| ) |
Output the given string over the serial port.
Definition at line 167 of file serialcli.py.
tuple serial::serialcli::IronSerial::BAUDRATES [static] |
(50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 57600, 115200)
Reimplemented from serial::serialutil::SerialBase.
Definition at line 29 of file serialcli.py.


LEFT
RIGHT
Help
Contact us
About our site
Terms & Conditions
Privacy statement
Close Menu
Help
Contact us
About our site
Terms & Conditions
Privacy statement
Close Menu


Matisse
public class Matisse
The Swift Matisse DSL class
You use this class to create Matisse image requests with a fluid interface. For normal usage you can simply use the class methods.
Example:
Matisse.load(imageURL).showIn(myImageView)
If you need more than one Matisse object you can create them by passing a context in by hand.
Example:
let customMatisse = Matisse(context: preconfiguredContext)
customMatisse.load(imageURL).showIn(myImageView)
-
Create a custom instance of the Matisse DSL class.
If for some reason you need to have multiple different Matisse DSL objects you can create new ones by passing a configured
MatisseContext
to this initializer.Declaration
Swift
public init(context: MatisseContext)
Parameters
context
The
MatisseContext
to use for this DSL instance.
-
Start a new image request for the given URL.
Declaration
Swift
public func load(_ url: URL) -> ImageRequestBuilder
Parameters
url
The URL to load the image from.
Return Value
An image request builder configured for the given URL.
-
Use a different fast cache for the shared Matisse instance.
Note
This method must only be called before using the shared Matisse instance for the first time.
Declaration
Swift
public class func useFastCache(_ cache: ImageCache?)
Parameters
cache
The cache to use, or
nil
to disable the fast cache -
Use a different slow cache for the shared Matisse instance.
Note
This method must only be called before using the shared Matisse instance for the first time.
Declaration
Swift
public class func useSlowCache(_ cache: ImageCache?)
Parameters
cache
The cache to use, or
nil
to disable the slow cache -
Use a different image loader for the shared Matisse instance.
This resets the request handler to a
DefaultImageRequestHandler
with the given image loader. If you want to set the image loader on a custom request handler, you must do so on the custom request handler and then set the handler usinguseRequestHandler(_:)
.Note
This method must only be called before using the shared Matisse instance for the first time.
Declaration
Swift
public class func useImageLoader(_ imageLoader: ImageLoader)
Parameters
imageLoader
The image loader to use
-
Use a different request handler for the shared Matisse instance.
Note
This method must only be called before using the shared Matisse instance for the first time.
Declaration
Swift
public class func useRequestHandler(_ requestHandler: ImageRequestHandler)
Parameters
requestHandler
The request handler to use
-
Access the shared Matisse instance.
When first accessed the instance is built using the current configuration. Afterwards it’s not possible to change this instance anymore.
Usually you don’t need to access the shared instance directly, instead you can use the
load()
class func which will in turn access this instance.Declaration
Swift
public static var shared: Matisse { get }
Return Value
The shared Matisse instance
-
Start a new image request for the given URL using the shared Matisse instance.
Declaration
Swift
public class func load(_ url: URL) -> ImageRequestBuilder
Parameters
url
The URL to load the image from.
Return Value
An image request builder configured for the given URL.


Deploying your docs
A basic guide to deploying your docs to various hosting providers
GitHub Pages
If you host the source code for a project on GitHub, you can easily use GitHub Pages to host the documentation for your project. There are two basic types of GitHub Pages sites: Project Pages sites, and User and Organization Pages sites. They are nearly identical but have some important differences, which require a different work flow when deploying.
Project Pages
Project Pages sites are simpler as the site files get deployed to a branch
within the project repository (gh-pages
by default). After you checkout
the
primary working branch (usually master
) of the git repository where you
maintain the source documentation for your project, run the following command:
mkdocs gh-deploy
That’s it! Behind the scenes, MkDocs will build your docs and use the
ghp-import tool to commit them to the gh-pages
branch and push the
gh-pages
branch to GitHub.
Use mkdocs gh-deploy --help
to get a full list of options available for the
gh-deploy
command.
Be aware that you will not be able to review the built site before it is pushed
to GitHub. Therefore, you may want to verify any changes you make to the docs
beforehand by using the build
or serve
commands and reviewing the built
files locally.
!!! warning
You should never edit files in your pages repository by hand if you're using
the `gh-deploy` command because you will lose your work the next time you
run the command.
Organization and User Pages
User and Organization Pages sites are not tied to a specific project, and the
site files are deployed to the master
branch in a dedicated repository named
with the GitHub account name. Therefore, you need working copies of two
repositories on our local system. For example, consider the following file
structure:
my-project/
mkdocs.yml
docs/
orgname.github.io/
After making and verifying updates to your project you need to change
directories to the orgname.github.io
repository and call the
mkdocs gh-deploy
command from there:
cd ../orgname.github.io/
mkdocs gh-deploy --config-file ../my-project/mkdocs.yml --remote-branch master
Note that you need to explicitly point to the mkdocs.yml
configuration file as
it is no longer in the current working directory. You also need to inform the
deploy script to commit to the master
branch. You may override the default
with the remote_branch configuration setting, but if you forget to change
directories before running the deploy script, it will commit to the master
branch of your project, which you probably don’t want.
Be aware that you will not be able to review the built site before it is pushed
to GitHub. Therefore, you may want to verify any changes you make to the docs
beforehand by using the build
or serve
commands and reviewing the built
files locally.
!!! warning
You should never edit files in your pages repository by hand if you're using
the `gh-deploy` command because you will lose your work the next time you
run the command.
Custom Domains
GitHub Pages includes support for using a Custom Domain for your site. In
addition to the steps documented by GitHub, you need to take one additional step
so that MkDocs will work with your custom domain. You need to add a CNAME
file
to the root of your docs_dir. The file must contain a single bare domain or
subdomain on a single line (see MkDocs’ own CNAME file as an example). You may
create the file manually, or use GitHub’s web interface to set up the custom
domain (under Settings / Custom Domain). If you use the web interface, GitHub
will create the CNAME
file for you and save it to the root of your “pages”
branch. So that the file does not get removed the next time you deploy, you need
to copy the file to your docs_dir
. With the file properly included in your
docs_dir
, MkDocs will include the file in your built site and push it to your
“pages” branch each time you run the gh-deploy
command.
If you are having problems getting a custom domain to work, see GitHub’s documentation on Troubleshooting custom domains.
Read the Docs
Read the Docs offers free documentation hosting. You can import your docs using any major version control system, including Mercurial, Git, Subversion, and Bazaar. Read the Docs supports MkDocs out-of-the-box. Follow the instructions on their site to arrange the files in your repository properly, create an account and point it at your publicly hosted repository. If properly configured, your documentation will update each time you push commits to your public repository.
!!! note
To benefit from all of the [features] offered by Read the Docs, you will need
to use the [Read the Docs theme][theme] which ships with MkDocs. The various
themes which may be referenced in Read the Docs' documentation are Sphinx
specific themes and will not work with MkDocs.
Other Providers
Any hosting provider which can serve static files can be used to serve documentation generated by MkDocs. While it would be impossible to document how to upload the docs to every hosting provider out there, the following guidelines should provide some general assistance.
When you build your site (using the mkdocs build
command), all of the files
are written to the directory assigned to the site_dir configuration option
(defaults to "site"
) in your mkdocs.yaml
config file. Generally, you will
simply need to copy the contents of that directory to the root directory of your
hosting provider’s server. Depending on your hosting provider’s setup, you may
need to use a graphical or command line ftp, ssh or scp client to transfer
the files.
For example, a typical set of commands from the command line might look something like this:
mkdocs build
scp -r ./site user@host:/path/to/server/root
Of course, you will need to replace user
with the username you have with your
hosting provider and host
with the appropriate domain name. Additionally, you
will need to adjust the /path/to/server/root
to match the configuration of
your hosts’ file system.
See your host’s documentation for specifics. You will likely want to search their documentation for “ftp” or “uploading site”.
Local Files
Rather than hosting your documentation on a server, you may instead distribute
the files directly, which can then be viewed in a browser using the file://
scheme.
Note that, due to the security settings of all modern browsers, some things will not work the same and some features may not work at all. In fact, a few settings will need to be customized in very specific ways.
-
The
site_url
must be set to an empty string, which instructs MkDocs to build your site so that it will work with thefile://
scheme.site_url: ""
-
Set
use_directory_urls
tofalse
. Otherwise, internal links between pages will not work properly.use_directory_urls: false
-
You will need to either disable the search plugin, or use a third-party search plugin which is specifically designed to work with the
file://
scheme. To disable all plugins, set theplugins
setting to an empty list.plugins: []
If you have other plugins enabled, simply ensure that
search
is not included in the list.
When writing your documentation, it is imperative that all internal links use relative URLs as documented. Remember, each reader of your documentation will be using a different device and the files will likely be in a different location on that device.
If you expect your documentation to be viewed off-line, you may also need to be careful about which themes you choose. Many themes make use of CDNs for various support files, which require a live Internet connection. You will need to choose a theme which includes all support files directly in the theme.
When you build your site (using the mkdocs build
command), all of the files
are written to the directory assigned to the site_dir configuration option
(defaults to "site"
) in your mkdocs.yaml
config file. Generally, you will
simply need to copy the contents of that directory and distribute it to your
readers. Alternatively, you may choose to use a third party tool to convert the
HTML files to some other documentation format.
404 Pages
When MkDocs builds the documentation it will include a 404.html file in the build directory. This file will be automatically used when deploying to GitHub but only on a custom domain. Other web servers may be configured to use it but the feature won’t always be available. See the documentation for your server of choice for more information.


HOME
AUTHOR
EXTRA
+
Measure of Central Tendency
Z-Scores
Confidence Interval
Permutation And Combination
T-Table Scores
Chi-Square
Linear Regression
Probability
Trigonometry
Quadratic
Binomial Distribution
Confidence Interval
Enter Each Number Numbers in their respectful field
Sample Size Amount, n:
Leave Field at
'1'
if no Sample Size available
Sample Mean (average), X̄:
Standard Deviation, σ or s: .
Percentage %:
99.9%
99.5%
99%
95%
90%
85%
Get Values


In this age of increasing automation, programming is not limited to only computer science and related fields. Every competent engineer needs to know how to program. This makes Club of Programmers one of the most important clubs in the institute.
Club of Programmers (or better known as COPS) understands this responsibility and plays a crucial part in maintaining the coding culture in the institute. Introductory workshops are held for freshers to introduce them to the various facets of programming. Regular competitions are held for the general student body to test and sharpen their programming skills. COPS also has an essential role in the successful conduction of Technex, the institute’s techno-management festival. ICM(International Coding Marathon) event organised by COPS in Technex attracts the maximum participation in the fest.
Although the club has been functioning quite well as compared to other clubs, still, a lot of things needs to be done. Some great initiatives were taken by the current secretaries, including the formation of smaller groups focussed on specific areas (competitive programming group, development group and machine learning group) and the fresher’s mentorship program. Still there are lot of things that the club can improve upon. We hope that we are able to take this momentum forward.


The default protocol is "HTTP".
Use "HTTPS (Disable certificate checking)" to disable certificate checking.
Use "HTTPS (Enable certificate checking)" to enable certificate checking.


To take a trivial example, which of us ever undertakes laborious physical exercise
To take a trivial example, which of us ever undertakes laborious physical exercise
To take a trivial example, which of us ever undertakes laborious physical exercise
To take a trivial example, which of us ever undertakes laborious physical exercise
Copyright © 2019-01 一周读书


--- layout: post date: 2012-02-13 time: "09:00:00" authors: ["Greg Wilson"] title: Advertising Flyer tags: ["Content"] ---
I've put together a one-page flyer to advertise the course (each site would customize the "Local info" space at the bottom). Please let us know what you think...


Table of Contents
Data Points
67% said they were more likely to make a purchase when visiting a business’s mobile-friendly site, versus 61% who said they’d most likely leave a site that wasn’t optimized for mobile
Millennials discover content mostly through social media networks (SDL)
Just about half of the travel brands on Facebook found that their bookings increased because of their presence on the large social networking site (Digital Visitor)
85% of customers expect businesses to be active in social media (Vocus)
36% of online travelers visit social networking sites to influence destination selection (World Travel Market London)
70% of social media users update status/share photos while on holiday
71% of travel brands on Facebook found that they had better engagement and conversation with their customers
Global distribution systems informally uses 500,000 as a guide to the number of hotels in the world
Mobile Queries within the Travel Category Have Increased More Than 50%
Top mobile hospitality-related activities while planning a trip are (1) Looked up hotel address or directions (29%), (2) Researched things to do at the destination (23%), Read a hotel review (22%), Compared hotel prices and availability (21%), Booked a hotel room (18%), Received price alerts for hotels (18%)
Personalized micro-niche travel takes off: Growing dissatisfaction with one-size-fits-all travel is driving demand for customized offerings
Renting out vacation rental for as little as 18 weeks/year can cover more than 75% of your mortgage
With an average weekly rate of $1,520, a vacation rental owner is earning a “salary” of approximately $84 per hour of work.
87% of US travellers is more likely to book due to increased availability of online information.
63% (344,000) of all Airbnb listings are for the entire home, 34% (187,000) are private rooms, and shared rooms only account for 3% (16,000) of listings
47% of all Airbnb listing are apartments, 39% are houses, and the remaining supply is an assortment of wacky yurts, castles, and villas.
Nearly 70% of all entire home Airbnb listings are studios, 1 bed, and 2 bed units. This is one of the facts that has caught the attention of hotel operators. Short-term rentals are no longer the large homes located primarily in rural vacation destinations, they are located in the condos right next door to their properties.
1.8 billion young people in the world
"There should be a single customer databank, not separate ones for information on loyalty, transactions, and pricing."
Expert opinions
Links
Data Sources
Influencers
Getting users
Pricing
Our goal is to build multiple streams of income so that we don't have to rely on any one idea to succeed [why?]. At the same time we are resource constrained and can't work productively on completely different themes. Therefore as a compromise we need to think of ways in which we can earn money by spinning our features into standalone/whitelabel services.
For example:-
The idea is that if we've built an expertise around a product or a service (while working on it during the development of our own product) we must look for ways in which we can cash that expertise.
These services don't have to be marketed to different targets. The same set of audience can be sold different products based on their needs. We may also consider building customized services for them if the time investment is not that great. Depending upon the situation we may take a decision to accept clients who are not from our target audience.
Features
Student accomodations
[We need to do more research in the education tourism sector]
Rented property portfolio for investors [Suggestion]
It is common knowledge that landlords invest in properties to expand their portfolio. Buying of properties require a large amount of capital upfront and it's usually a long time before the returns come in. Buying a property is essentially a long term investment.
However airbnb has created a different kind of investment market. That of of "rentalpreneurs". There are people who rent various apartments only to sublet them on airbnb. Now subletting is looked down upon by various landlords, they want to feel in control of their property even when it's rented out. Subletting to some extent takes away that control from them.
To overcome this objection we can build a system that allows the landlords to "virtually lease" their property to investors for a period of say 6 months or an year. The lessee would then be free to recover his investment by letting out the property to other tenants and the landlord would have a guaranteed long term income.
The crucial difference is that while airbnb encourages deceit which results in bad blood between landlords and tenants, there is no such issue here. The landlord is promised an occupancy rate of 100% for the duration of the lease. He won't have to manage the property, he won't have to care about generating leads for his accommodation. He gets his fixed income and then he can go to a vacation in Malta or some other place. Where as the property investor gets to invest a smaller sum with much quicker returns. The lease may be renewed if the parties are happy with the partnership. Win win.
Analytics for users
We can use google anaytics to track the webstes across multiple domains and subdomains. We can also pull results using the analytics api for every domain/subdomain.
There is a node js client library for GA. Bindings are also available in other languages
We should also provide simplified analytics summary for the users. The summary should be visible on a separate screen in the mobile app. Some ideas on parameters that can be tracked:-
Depending upon the success of the analytics feature we may also add other parameters to track:-
Based on the numbers we may also provide him tips on maximizing his occupancy rate. Or at least encourage him to talk of the discussion forums so that he may get help from the community.
Domain Names
To add a domain name lookup on a domain registrar and verify that it's available.
Available on go daddy
Q's and A's
1. What are we building?
A: We are building an application that allows property managers to manage and promote their properties.
2. Who will use it?
A: The term "property managers" is pretty broad, there are many different kinds properties focused on serving different segments of the market. Initially we'll be focusing on short term accommodation sector. That means our clients will be vacation home owners, shack owners, people with boutique hotels etc
3. Why are we building it?
A: Because we can? Our target market is really big with 148.3M bookings being made online every year. There is no way to effectively determine how many accommodation providers are there in the world but it's very easy to see that they have to deal with multiple applications each takcling a very limited subset of the problem. If we can make a product that serves as a sort of mini command center and allows them to work on various aspects of their property from a single app we've got ourselves a business.
4. How is it different from existing solutions?
Ok so this will be a lengthy answer. When we say that we're building an app for home owners that helps them manage their property we are implying that the properties of our customers are being used to make money. And they are making money by renting/leasing their properties. Which means that they have found a market for their homes.Now this is where it gets tricky.
Ideally the channel that brings them customers should also provide them with tools to manage their property. Because they already control a very large part of their operation. But since that is not the case with the channels we have to build an application that not only allows the owners to manage their property but also doubles up as a lead generation platform.
So we have to think about this app from two different perspectives. From the perspective of home owner the application should function as a tool that manages their bookings, their dealings with the guests. From the perspective of the guests the application should allow then to search for home, talk with their owners, pay for their booking online etc.
It is different from the existing applications in the market because it provides a solution to twin aspects of managing and selling a property. We have a lot of listing websites but those websites are not very good individualizing a customers offering (a home is just one among the thousand others) and do not provide any solution to the day to day problems faced while running a rental business (invoicing,billing,marketing, keeping records of tenants etc).
5. What is the MVP?
A: The MVP is a forum application that can serve as a communication tool (a help desk) for the internal/external operations of a property. The idea is that we can go to a boutique hotel and ask sell them a tool that allows them to not only communicate with their prospective customers but also with other members of their team.
We are going to re-purpose nodebb, an opensource forum and distribute it as a helpdesk software to our target audience (boutique hotels, vacation rental owners). In the background we'll be building our main application and once it's ready we'll start communication process by first reaching out to our forum audience and then take it further from there.
The MVP can also be sold to people who are not directly our target audience but can indirectly influence the success of our app. For ex if we sell the forum software to college communities the students can help us promote our property management app when they go on a vacation. Or maybe to someone who owns a vacation rental. Even in the case they make no such promotion or introduction we still gain an audience that can benefit our home owners that are already on our platform. That is we can start bringing our existing property owners some customers that we gain from our forums to stay in their homes.
Moreover this MVP gives us an opportunity to build our server technology. When we are first launching an app we need to do a lot of ground work like provisioning our server, setting up development and production environments ,setting up a testing framework and so on. Since the development task is a bit light (thanks to the opensource app) we can focus our efforts in secondary activities that will help us speed up the execution of our main application.
6. Where is the MVP?
Safe in a git repository far away from the clutches of this evil world, where it continues to patiently await it's evolution into a pretty butterfly ready to scintillate it's splendour upon one and all.
Market Analysis
Rtech group
Address : Building No-80, 2nd Floor, Sector - 44 Adjoining Ramada Hotel, Gurgaon 122002
Parties in the deal
GIC is singapore government's fund manager. It's interesting to note how governments are investing in foreign real estate. [I can't think of an immediate implication this could have upon us but there are a couple of lines of thought emerging. I believe that this joint venture could pave the way for the scion group to invest/ acquire property portfolios in singapore(Maybe I should research Singapore's education sector) If my belief is true, then if I can get some singapore based student housing communities on our platform it could become a big value proposition for the scion group to get onboard our platform]
The scion group, founded in 1999, specializes in student housing and operates in :-
[It follows that the above mentioned regions must be good for education or at the very least have a number of schools and colleges. Perhaps we might be able to find some clients for our community engagement tool for schools and colleges]
Facts at a glance
"Student residents are adult customers who receive our full respect, in an independent environment that supports educational pursuits and social interaction." [Well this is code speak for "you are free to do naughty things in our apartment because you are all grown up and away from your parents" anyway what's important for us is the fact that they want to promote social interaction. That social interaction must involve both property managers and the residents. Which means that we should present the app not only as a helpdesk but also a platform that facilities communication with other members of the community. The private chat feature should be emphasized ]
Cloudbeds was started by a team of engineers who built lots of tools for people in the hospitality domain. PMS, CRMs and channel managers. After doing this for sometime they found a market where an integration of these tools on a single platform could be sold. The idea was that it would simplify the hotel management for owners and staff. The important thing from my point of view is that they came to the same conclusion that I did and made
on a single platform.
My approach is just a bit different from them. I start with the CRM. By morphing the forum application to serve as an internal communication tool for project management. And then build a booking engine on top of it.


6 local startups to present at Singapore Fintech Festival
by Tech DeskPakistani Tech industry is making waves, people are being given more opportunities to present their work globally.
Shah Mahmood Qureshi took to Twitter to acknowledge 6 Pakistani startups that will be presenting their products and solutions at the Singapore Fintech Festival next week on the #StartKar platform, which is an initiative of the Pakistani High Commission.
The Singapore Fintech Festival is an international platform for the fin-tech community to come and connect with one another, collaborate and co-create with each other.
The festival takes place annually and will be a three-day fiesta starting November 11 this year. The six startups from Pakistan are; Tez, Rapid Compute, Hysab Kytab, Cheetay, Finja, CreditFix and a more established business now called Bykea.
Ranging from digital micro-financing institutions to mobile applications, listed below are the startups and what they will be presenting.
Tez Financial service, a digital micro-financing institution aimed at providing financial support to the unbanked and under-banked through a smartphone application is one of the six that are presenting their app at the Singapore Fintech Festival.
Rapid Compute
PHOTO: RAPIDCOMPUTE
Pakistan’s first premium class public cloud computing platform, Rapid Compute provides cloud solutions to power the Mission Critical applications of business.
Hysab Kytab
PHOTO: HYSAB KYTAB
Hysab Kytab is a forthcoming fin-tech startup that provides users with an easy-to-use mobile application that offers a platform for people to manage their financial doings.
Cheetay
PHOTO: CHEETAY
Cheetay Logistics, a technology-enabled logistics company catering to high demand NOWCommerce in Pakistan which is a booming e-commerce platform will also be presenting their know-how of the product.
Finja
PHOTO: FINJA
Finja is a company that aims to transform the financial structure of the economy by digitalising it. The company is a licensed digital lending platform that intends to focus on the financial wellness of urban working-class individuals, SMEs, and businesses.
CreditFix
PHOTO: CREDITFIX
A company that uses Machine learning and Big Data to combine and allow low-income borrowers to finance loans for starting or growing their business ventures named CreditFix will be talking about
Bykea
PHOTO: BYKEA
A now well-established business of ride-hailing that provides affordable delivery service around the city while also creating job opportunities for people will also be amongst the businesses that will showcase what their company is all about.
With the advancement in the technology world almost every day, it comes as no surprise that Pakistan is also hopping on that bandwagon and startups are taking this as a role on themselves to present their businesses to gain some popularity globally.


This document presents the details of @zoomus/instantsdk.
Most feature has its own namespace, while events, enums and interfaces are exposed under Global namespace.
ZoomInstant namespace provides methods about checking system requirements and creatint instant client instance.
InstantClient namespace gathers methods about interacting with a zoom instant meeting. It can initial client instance, join or leave client, manage users in meeting, listen events, and get status about the meeting itself.
ChatClient namespace provides methods define the chat behavior.
Stream namespace contains methods about stream contents. Video, audio, screen sharing can be controlled though this methods, check the apis for details.
Generated using TypeDoc


Vancouver Collection
8k wallpapers, free for non-commercial use
Web & Print Design
Websites, posters, billboards, banners.


Nowadays, I am busy with building an unicorn. 🦄
Me and my awesome friends are building Change, the future of finance, the most exciting end-user Fintech product in Europe.
Our investment app with a debit card provides a simple way to invest and use cryptocurrencies, stocks, gold and more.
As of 2019, Allianz is the world's largest insurance company according to Forbes.
I worked for Allianz for ten months before I moved to Estonia, from July 2018 to April 2019.
I built Allianz Messenger Client, which is used as a library in the applications of the company's Turkey branch, to send SMS to users via a third-party provider.
Infina is the best software provider for investment banks and other financial institutions in Turkey.
I worked for Infina for almost two and a half years. As my first full-time job as a developer, I realised I am interested in economics and Fintech.
I built Accounting module, which is used in Infleks Operation and Infleks Wealth Management products.
I consider myself as a Fintech guy.
I have strong background in tech, and I am holding a master in economics.
I am a product-minded person. For me, tech is just a tool that helps me to build my product.
This is why I do not have any favourite programming language, framework, library or any kind of tool. I have favourite products. I am inspired by these products while I am working.
I am really interested in science, philosophy, history and all other titles between them.
I develop video games with my friends as a hobby. Ionia OÜ is the company I found in Estonia to publish these games


Color, layout, typography, contrast
Box model, selectors, grid system
Image sprites, pseudo classes, cool effects
Cross-browser support, boilerplates, CSS tools
However, not limited to Photoshop's "web-only" colors
Don't use two colors of the same value
Bad:
Good:
Web Design is 95% Typography
Oliver Reichenstein, CEO & Founder at Information Architects
Basic terminology
Kerning, letter spacing, & word spacing
Leading & line height
Serif fonts are easier to read
Utilize white space
Avoid distracting backgrounds
Only put emphasis (bold, italic) on elements that need it most
Treat bodies of text as a user interface
Keep justification and indents in mind
Headings, subheadings, body text, captions, footnotes
.className {...} .idName {...} img {...} a {...} .class1, .class2 {...} .outerClass .innerClass {...} img.round {...}
/
#


Asking Good Questions in DBC
Balancing Emotions and Vulnerability in Posts
April 3, 2015
BACK | HOMEI didn't ask too many real questions on the Dev Bootcamp Google+ page other than the various pairing requests I posted. I do remember posting one frantically after I messed up my Bash profile: "Can anyone help me with my terminal? Every command I type in is followed by '-bash: return: 0/Users/natty/.bash_profile: numeric argument required.' I have no idea what this means and I am wasting valuable time trying to figure out. Please help!" I quickly received help and resolved the problem, but in hindsight I was a little embarrassed for sounding so panicky when the problem was so easy to fix. I just freaked out!
In another instance, I got frustrated making a website resemble an overly-complicated wireframe I had produced, and ended up posting to Google+ without a real question. It was more to complain and vent a bit. I didn't realize it at the time! I received many kind responses and again, the problem passed without too much difficulty (it was just a long project). Again, I freaked out and posted without as much regard to my tone as I should have had. Where in the first example at least I had a specific technical problem that we were able to fix, in this case there wasn't really anything anyone could do except comfort me (which they did). But did that warrant a post to the group page? As I toughened up a bit through the next few weeks, I decided it wasn't. But at the time, when I got those responses, they made me feel a lot better! So I guess it really could go either way. I wished I had held off, but the replies I got were immensely helpful at the time.
The take-away from these and other times I've posted is, if I'm feeling frustrated, and think that sending off a message may elicit a reply that's going to solve my problem, I should probably get up and take a walk first. I posted some pretty passionate posts when I really could have asked things more simply, or at least without as much emotion. I now feel like I should have been more steady in those times of concern and frustration.
But at the same time, the DBC way seems to emphasize engineering empathy, being open with feelings, and honest with others, so I felt very natural writing these posts as I did so. In fact, part of me was patting myself on the back for being vulnerable as we are asked so often to do! So the real conclusion is, I wasn't really right or wrong in any case. My problems were all resolved quickly after all, and by many, many contributors. The community did step up and answer my questions and try to help me. But I would still write things differently if I could go back and do it again.
As I look back, I think there is a balance between vulnerability and honesty, and whining, which I want to stay a little more clear of. I felt a genuine reason for reaching out each time I did, and in each case I got the help I needed. But going forward, I want to keep my emotions a little more behind the scenes - take a stretch and think it through if I'm considering posting a message in the heat of frustration. Odds are that no matter what, there will be people there to help, but it's worth a quick cool-off to make sure that the tone matches the magnitude of the problem, and not just the emotions I'm feeling at the moment.


Friday's Scores
by The Associated PressPREP FOOTBALL=
Akr. East 14, Akr. Buchtel 0
Akr. Ellet 27, Akr. Firestone 7
Akr. Hoban 38, Chardon NDCL 13
Akr. Manchester 27, Cuyahoga Falls CVCA 7
Alliance 48, Alliance Marlington 35
Amanda-Clearcreek 28, Circleville Logan Elm 6
Andover Pymatuning Valley 42, Windham 0
Anna 56, Delphos St. John's 7
Ansonia 31, New Madison Tri-Village 8
Archbold 38, Wauseon 0
Ashland Crestview 34, Plymouth 0
Ashtabula Edgewood 28, Ashtabula Lakeside 12
Attica Seneca E. 48, New Washington Buckeye Cent. 12
Aurora 42, Copley 0
Austintown Fitch 27, Youngs. Mooney 14
Avon 49, Amherst Steele 21
Avon Lake 31, Olmsted Falls 7
Bainbridge Paint Valley 35, Williamsport Westfall 0
Barberton 26, Kent Roosevelt 0
Barnesville 31, Belmont Union Local 13
Batavia Clermont NE 34, Williamsburg 28
Beachwood 70, Gates Mills Hawken 26
Beallsville 43, Paden City, W.Va. 34
Beaver Eastern 26, Franklin Furnace Green 6
Bedford 53, Warrensville Hts. 6
Bellbrook 45, Monroe 0
Bellefontaine 48, New Carlisle Tecumseh 13
Berea-Midpark 40, N. Olmsted 35
Berlin Center Western Reserve 41, Mineral Ridge 0
Bethel-Tate 34, Fayetteville-Perry 14
Beverly Ft. Frye 69, Magnolia, W.Va. 8
Bidwell River Valley 29, Crown City S. Gallia 12
Blanchester 38, Lees Creek E. Clinton 14
Bloom-Carroll 24, Ashville Teays Valley 9
Bloomdale Elmwood 30, Millbury Lake 27
Brookfield 33, Warren Champion 0
Bryan 52, Swanton 3
Bucyrus Wynford 40, Bucyrus 7
Byesville Meadowbrook 36, Cambridge 7
Cadiz Harrison Cent. 39, Rayland Buckeye 6
Camden Preble Shawnee 49, Day. Northridge 14
Campbell Memorial 48, Newton Falls 31
Can. Cent. Cath. 26, Louisville 22
Can. South 17, Louisville Aquinas 14
Canal Fulton Northwest 49, Loudonville 21
Canal Winchester 28, Sunbury Big Walnut 13
Canal Winchester Harvest Prep 21, Baltimore Liberty Union 14
Canfield 30, Youngs. Boardman 14
Canfield S. Range 36, Hubbard 13
Carey 28, N. Robinson Col. Crawford 20
Carrollton 28, Minerva 7
Casstown Miami E. 50, W. Alexandria Twin Valley S. 6
Castalia Margaretta 44, Fremont St. Joseph 29
Centerburg 44, Fredericktown 6
Chardon 47, Eastlake N. 7
Chillicothe Unioto 41, Chillicothe Huntington 8
Cin. Anderson 63, Loveland 8
Cin. Clark Montessori 40, Miami Valley Christian Academy 24
Cin. Colerain 16, Fairfield 10, OT
Cin. Deer Park 48, Reading 7
Cin. Hills Christian Academy 53, Day. Meadowdale 0
Cin. La Salle 27, Cin. Elder 25
Cin. Madeira 21, Cin. Mariemont 20
Cin. Mt. Healthy 41, Trenton Edgewood 21
Cin. Purcell Marian 39, Norwood 13
Cin. St. Xavier 35, Lou. St. Xavier, Ky. 30
Cin. Sycamore 35, Cin. Oak Hills 0
Cin. Taft 32, Cin. Aiken 0
Cin. Turpin 42, Milford 13
Cin. Walnut Hills 35, Cin. Withrow 14
Cin. West Clermont 35, Kings Mills Kings 19
Cin. Wyoming 21, Cin. Indian Hill 18
Clarksville Clinton-Massie 63, Wilmington 24
Clayton Northmont 28, Huber Hts. Wayne 27
Cle. Benedictine 62, Cuyahoga Falls Walsh Jesuit 24
Cle. Collinwood def. Cle. Lincoln W., forfeit
Cle. Glenville 56, Cle. Rhodes 0
Cle. Hay 39, Cle. JFK 6
Cle. Hts. 21, Maple Hts. 12
Cle. John Adams 20, Cle. John Marshall 6
Clyde 28, Bellevue 20
Collins Western Reserve 42, Ashland Mapleton 21
Cols. Beechcroft 27, Cols. Northland 0
Cols. Briggs 38, Cols. West 30
Cols. Centennial 55, Cols. Whetstone 7
Cols. East 38, Cols. Linden McKinley 12
Cols. Eastmoor 33, Cols. Africentric 0
Cols. Hamilton Twp. 14, Logan 7
Cols. Marion-Franklin 45, Cols. South 14
Cols. Ready 27, Cols. Grandview Hts. 14
Cols. Walnut Ridge 35, Cols. Independence 0
Cols. Watterson 17, Cols. St. Charles 3
Columbia Station Columbia 35, Sullivan Black River 12
Columbiana 82, E. Palestine 0
Columbiana Crestview 16, Leavittsburg LaBrae 7
Columbus Grove 49, Bluffton 0
Convoy Crestview 41, Paulding 6
Corning Miller 42, Fairfield Christian 30
Corning Miller def. Stewart Federal Hocking, forfeit
Cortland Lakeview 15, Jefferson Area 6
Cory-Rawson 12, Van Buren 7
Covington 47, Tipp City Bethel 6
Crestline 42, Vanlue 14
Creston Norwayne 46, Doylestown Chippewa 14
Cuyahoga Hts. 31, Independence 7
Dalton 41, Rittman 7
Day. Christian 44, Day. Jefferson 0
DeGraff Riverside 39, Mt. Victory Ridgemont 12
Defiance Tinora 42, Antwerp 8
Delaware Olentangy Berlin 36, Thomas Worthington 13
Dola Hardin Northern 21, Waynesfield-Goshen 14
Dover 34, New Philadelphia 28
Dresden Tri-Valley 71, Zanesville Maysville 20
Dublin Coffman 28, Cols. Upper Arlington 14
Dublin Jerome 56, Worthington Kilbourne 0
E. Liverpool 48, Wellsville 15
Eaton 54, New Lebanon Dixie 6
Edgerton 44, Defiance Ayersville 8
Edon 62, Stryker 18
Elyria Cath. 35, Rocky River 7
Euclid 32, Shaker Hts. 14
Findlay Liberty-Benton 52, McComb 35
Fostoria 48, Elmore Woodmore 13
Franklin 35, Day. Oakwood 0
Ft. Loramie 82, Lewisburg Tri-County N. 8
Ft. Recovery 41, Versailles 22
Gahanna Cols. Academy 41, Cols. Bexley 0
Galion Northmor 49, Sparta Highland 7
Gallipolis Gallia 57, S. Point 26
Garfield Hts. 37, Cols. Mifflin 0
Garrettsville Garfield 55, Youngs. Valley Christian 6
Geneva 42, Chagrin Falls 24
Germantown Valley View 35, Brookville 0
Gibsonburg 48, Bascom Hopewell-Loudon 26
Glouster Trimble 79, Wahama, W.Va. 0
Goshen 26, New Richmond 12
Grafton Midview 42, Westlake 0
Granville 35, Pataskala Watkins Memorial 14
Greenville 19, Sidney 14
Greenwich S. Cent. 34, New London 27
Hamilton Badin 27, Cin. McNicholas 3
Hamilton New Miami 49, Lockland 14
Hamilton Ross 34, Oxford Talawanda 21
Hamler Patrick Henry 34, Delta 14
Hannibal River 48, New Matamoras Frontier 12
Hanoverton United 40, Lisbon David Anderson 13
Harrison 49, Cin. NW 0
Harrod Allen E. 50, Ada 8
Heath 17, Johnstown-Monroe 13
Hebron Lakewood 41, Utica 14
Hicksville 41, Haviland Wayne Trace 13
Hilliard Bradley 21, Delaware Hayes 17
Hilliard Darby 35, Dublin Scioto 14
Hilliard Davidson 31, Galloway Westland 13
Hillsboro 22, Greenfield McClain 12
Howard E. Knox 41, Danville 7
Hudson 56, Twinsburg 13
Ironton 48, Portsmouth 7
Ironton Rock Hill 33, Coal Grove Dawson-Bryant 20
Jackson 49, Chillicothe 2
Jeromesville Hillsdale 15, Apple Creek Waynedale 8
John Marshall, W.Va. 34, Vincent Warren 17
Kenton 35, Elida 15
Kettering Alter 35, Day. Chaminade Julienne 28
Kettering Fairmont 28, Lebanon 8
Kirtland 48, Burton Berkshire 13
LaGrange Keystone 54, Oberlin 30
Lakewood St. Edward 36, National Christian Academy, Md. 14
Lancaster Fairfield Union 35, Circleville 14
Lancaster Fisher Cath. 62, Troy Christian 32
Leipsic 30, Arlington 7
Lewis Center Olentangy Orange 42, Westerville S. 24
Lewistown Indian Lake 49, Urbana 13
Lexington 28, Caledonia River Valley 0
Liberty Center 49, Metamora Evergreen 21
Liberty Twp. Lakota E. 21, Hamilton 14
Lima Bath 21, Lima Shawnee 20, OT
Lima Cent. Cath. 14, Lucas 7
Lima Perry 30, Sidney Lehman 24
Lisbon Beaver 44, Youngs. Liberty 22
Lodi Cloverleaf 40, Akr. Coventry 7
London Madison Plains 76, Spring. Cath. Cent. 0
Lorain 40, E. Cle. Shaw 0
Lorain Clearview 36, Sheffield Brookside 0
Lore City Buckeye Trail 20, E. Can. 18, OT
Macedonia Nordonia 56, N. Royalton 26
Madison 50, Lyndhurst Brush 12, OT
Magnolia Sandy Valley 41, Malvern 0
Manchester 38, Cin. Hillcrest 34
Mansfield Sr. 49, Mansfield Madison 7
Maria Stein Marion Local 24, Coldwater 0
Marion Pleasant 54, Galion 44
Marysville 35, Grove City Cent. Crossing 0
Mason 35, Cin. Princeton 19
Massillon Jackson 29, N. Can. Hoover 23
Massillon Perry 48, Can. Glenoak 14
Mayfield 24, Chagrin Falls Kenston 21
McArthur Vinton County 20, Wellston 0
McGuffey Upper Scioto Valley 32, Marion Elgin 24
Medina 45, Brunswick 35
Medina Highland 42, Tallmadge 14
Mentor 56, Strongsville 21
Miamisburg 21, Beavercreek 6
Middletown Fenwick 42, Day. Carroll 20
Milan Edison 41, Huron 20
Milton-Union 49, Carlisle 13
Minford 33, Lucasville Valley 0
Minster 42, New Bremen 2
Mogadore 45, Mantua Crestwood 24
Montpelier 41, W. Unity Hilltop 18
Morrow Little Miami 48, Simon Kenton, Ky. 35
Mt. Blanchard Riverdale 54, N. Baltimore 13
Mt. Gilead 26, Cardington-Lincoln 25
Mt. Orab Western Brown 41, Batavia 0
Mt. Vernon 32, Millersburg W. Holmes 24
N. Bend (Cleves) Taylor 20, Cin. Finneytown 12
N. Jackson Jackson-Milton 42, Sebring McKinley 0
N. Lewisburg Triad 58, Spring. NE 19
N. Ridgeville 37, Lakewood 6
Napoleon 28, Bowling Green 7
Navarre Fairless 21, Massillon Tuslaw 20
Nelsonville-York 35, Athens 28
New Albany 35, Groveport-Madison 7
New Concord John Glenn 42, Crooksville 14
New Lexington 26, Philo 8
New Middletown Spring. 38, McDonald 21
New Paris National Trail 56, Bradford 6
Newark 41, Cols. Franklin Hts. 30
Newark Cath. 35, Johnstown Northridge 14
Newark Licking Valley 42, Pataskala Licking Hts. 21
Newbury 32, Vienna Mathews 8
Niles McKinley 45, Girard 35
Northwood 61, Oregon Stritch 24
Norton 35, Mogadore Field 14
Oak Harbor 48, Port Clinton 8
Ontario 35, Marion Harding 17
Oregon Clay 43, Fremont Ross 7
Orrville 38, Wooster Triway 20
Orwell Grand Valley 21, Fairport Harbor Harding 6
Painesville Harvey 24, Orange 14
Pandora-Gilboa 42, Arcadia 14
Parma Hts. Holy Name 42, Fairview 7
Parma Hts. Valley Forge 63, Parma Normandy 0
Parma Padua 26, Mentor Lake Cath. 22
Pemberville Eastwood 35, Rossford 33
Perry 48, Chesterland W. Geauga 7
Perrysburg 56, Maumee 8
Pickerington Cent. 42, Grove City 6
Pickerington N. 21, Gahanna Lincoln 9
Piketon 50, Chillicothe Zane Trace 28
Plain City Jonathan Alder 24, London 23
Poland Seminary 14, Struthers 12
Portsmouth Sciotoville 12, Portsmouth Notre Dame 7
Powell Olentangy Liberty 35, Westerville N. 7
Proctorville Fairland 36, Chesapeake 33
Ravenna 34, Peninsula Woodridge 3
Ravenna SE 33, Rootstown 20
Reynoldsburg 55, Lancaster 20
Richfield Revere 23, Bay Village Bay 21
Richmond Hts. 34, Brooklyn 26
Richwood N. Union 48, Bellefontaine Benjamin Logan 6
Rockford Parkway 33, St. Henry 6
Rocky River Lutheran W. 23, Garfield Hts. Trinity 7
S. Charleston SE 20, Cedarville 6
STVM 27, Youngs. Ursuline 7
Salineville Southern 50, Leetonia 7
Sandusky 49, Sandusky Perkins 14
Sarahsville Shenandoah 14, Caldwell 6
Shadyside 49, Woodsfield Monroe Cent. 24
Shelby 35, Bellville Clear Fork 25
Sherwood Fairview 49, Tol. Ottawa Hills 0
Smithville 42, West Salem Northwestern 20
Solon 38, Elyria 15
Southeastern 66, Frankfort Adena 37
Southington Chalker 60, Ashtabula St. John 0
Spencerville 55, Delphos Jefferson 0
Spring. Greenon 38, Jamestown Greeneview 21
Spring. NW 27, St. Paris Graham 12
Spring. Shawnee 35, Spring. Kenton Ridge 20
Spring. Shawnee 35, Spring. Kenton Ridge 20
Springboro 37, Centerville 6
Springfield 21, Trotwood-Madison 20
St. Bernard Roger Bacon 49, Cin. Summit Country Day 20
St. Bernard-Elmwood Place 42, Cin. Country Day 26
St. Marys Memorial 48, Defiance 6
Steubenville 48, Linsly, W.Va. 28
Stow-Munroe Falls 43, Cuyahoga Falls 7
Streetsboro 41, Akr. Springfield 0
Sugar Grove Berne Union 33, Grove City Christian 2
Sugarcreek Garaway 62, Zoarville Tuscarawas Valley 7
Sycamore Mohawk 46, Upper Sandusky 7
Sylvania Northview 24, Sylvania Southview 7
Thornville Sheridan 46, McConnelsville Morgan 0
Tiffin Calvert 48, Kansas Lakota 14
Tiffin Columbian 29, Norwalk 14
Tipp City Tippecanoe 41, Vandalia Butler 3
Tol. Bowsher 42, Tol. Scott 6
Tol. Cent. Cath. 42, Findlay 21
Tol. St. John's 46, Lima Sr. 28
Tol. Waite 38, Tol. Rogers 14
Tol. Whitmer 35, Tol. St. Francis 18
Tol. Woodward 28, Tol. Start 14
Tontogany Otsego 36, Genoa Area 0
Troy 35, Piqua 9
Union City Mississinawa Valley 22, Arcanum 12
Uniontown Lake 10, Green 7
Van Wert 45, Celina 14
W. Carrollton 21, Riverside Stebbins 14
W. Chester Lakota W. 41, Middletown 14
W. Jefferson 58, Milford Center Fairbanks 32
W. Lafayette Ridgewood 50, Newcomerstown 21
W. Liberty-Salem 35, Mechanicsburg 15
Wadsworth 35, Brecksville-Broadview Hts. 34
Wapakoneta 7, Ottawa-Glandorf 6
Warren Harding 28, Warren Howland 6
Warsaw River View 31, Coshocton 6
Washington C.H. 40, Washington C.H. Miami Trace 33
Waterford 26, Belpre 16
Waverly 27, Oak Hill 14
Waynesville 24, Middletown Madison Senior 21
Wellington 43, Oberlin Firelands 14
Westerville Cent. 41, Lewis Center Olentangy 7
Wheelersburg 41, Portsmouth W. 7
Whitehall-Yearling 40, Delaware Buckeye Valley 30
Whitehouse Anthony Wayne 56, Holland Springfield 7
Wickliffe 36, Middlefield Cardinal 3
Willard 26, Vermilion 14
Willoughby S. 27, Painesville Riverside 21
Willow Wood Symmes Valley 22, McDermott Scioto NW 16
Wintersville Indian Creek 43, Richmond Edison 6
Wooster 37, Ashland 16
Worthington Christian 53, Cols. KIPP 14
Youngs. Chaney High School 27, Youngs. East 0, 2OT
Zanesville 52, Marietta 28
Zanesville Rosecrans 66, Tol. Christian 24
Zanesville W. Muskingum 47, Morral Ridgedale 0
___
Some high school football scores provided by Scorestream.com, https://scorestream.com/


Expanded Sass renderer.
Located in /includes/sass/renderers/ExpandedSassRenderer.class.php (line 27)
SassRenderer | --ExpandedSassRenderer
Render Sass source
Inherited From SassRenderer
SassRenderer::__construct()
SassRenderer::getElements()
SassRenderer::getInstance()
SassRenderer::render()
SassRenderer::setElements()
SassRenderer::__toString()
Documentation generated on Mon, 09 Jul 2007 10:05:04 +0200 by phpDocumentor 1.3.0RC3


Class: Jammit::Controller
- Inherits:
-
ActionController::Base
- Object
- ActionController::Base
- Jammit::Controller
- Defined in:
- lib/jammit/controller.rb
Overview
The JammitController is added to your Rails application when the Gem is loaded. It takes responsibility for /assets, and dynamically packages any missing or uncached asset packages.
Constant Summary
- VALID_FORMATS =
[:css, :js]
- SUFFIX_STRIPPER =
/-(datauri|mhtml)\Z/
- NOT_FOUND_PATH =
"#{Jammit.public_root}/404.html"
Instance Method Summary (collapse)
-
- (Object) cache_package
private
Tells the Jammit::Packager to cache and gzip an asset package.
-
- (Object) generate_stylesheets
private
If we’re generating MHTML/CSS, return a stylesheet with the absolute request URL to the client, and cache a version with the timestamped cache URL swapped in.
-
- (Object) package
The “package” action receives all requests for asset packages that haven’t yet been cached.
-
- (Object) package_not_found
private
Render the 404 page, if one exists, for any packages that don’t.
-
- (Object) parse_request
private
Extracts the package name, extension (:css, :js), and variant (:datauri, :mhtml) from the incoming URL.
-
- (Object) prefix_url(path)
private
Generate the complete, timestamped, MHTML url — if we’re rendering a dynamic MHTML package, we’ll need to put one URL in the response, and a different one into the cached package.
Instance Method Details
- (Object) cache_package (private)
Tells the Jammit::Packager to cache and gzip an asset package. We can’t just use the built-in “cache_page” because we need to ensure that the timestamp that ends up in the MHTML is also on the cached file.
41 42 43 44 |
# File 'lib/jammit/controller.rb', line 41 def cache_package dir = File.join(page_cache_directory, Jammit.package_path) Jammit.packager.cache(@package, @extension, @contents, dir, @variant, @mtime) end |
- (Object) generate_stylesheets (private)
If we’re generating MHTML/CSS, return a stylesheet with the absolute request URL to the client, and cache a version with the timestamped cache URL swapped in.
57 58 59 60 61 62 63 64 65 |
# File 'lib/jammit/controller.rb', line 57 def generate_stylesheets return @contents = Jammit.packager.pack_stylesheets(@package, @variant) unless @variant == :mhtml @mtime = Time.now request_url = prefix_url(request.fullpath) cached_url = prefix_url(Jammit.asset_url(@package, @extension, @variant, @mtime)) css = Jammit.packager.pack_stylesheets(@package, @variant, request_url) @contents = css.gsub(request_url, cached_url) if perform_caching css end |
- (Object) package
The “package” action receives all requests for asset packages that haven’t yet been cached. The package will be built, cached, and gzipped.
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/jammit/controller.rb', line 19 def package parse_request template_ext = Jammit.template_extension.to_sym case @extension when :js render :js => (@contents = Jammit.packager.pack_javascripts(@package)) when template_ext render :js => (@contents = Jammit.packager.pack_templates(@package)) when :css render :text => generate_stylesheets, :content_type => 'text/css' end cache_package if perform_caching && (@extension != template_ext) rescue Jammit::PackageNotFound package_not_found end |
- (Object) package_not_found (private)
Render the 404 page, if one exists, for any packages that don’t.
82 83 84 85 |
# File 'lib/jammit/controller.rb', line 82 def package_not_found return render(:file => NOT_FOUND_PATH, :status => 404) if File.exists?(NOT_FOUND_PATH) render :text => "
404: \"#{@package}\" asset package not found.
", :status => 404 end |
- (Object) parse_request (private)
Extracts the package name, extension (:css, :js), and variant (:datauri, :mhtml) from the incoming URL.
69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/jammit/controller.rb', line 69 def parse_request pack = params[:package] @extension = params[:extension].to_sym raise PackageNotFound unless (VALID_FORMATS + [Jammit.template_extension.to_sym]).include?(@extension) if Jammit. suffix_match = pack.match(SUFFIX_STRIPPER) @variant = Jammit. && suffix_match && suffix_match[1].to_sym pack.sub!(SUFFIX_STRIPPER, '') end @package = pack.to_sym end |
- (Object) prefix_url(path) (private)
Generate the complete, timestamped, MHTML url — if we’re rendering a dynamic MHTML package, we’ll need to put one URL in the response, and a different one into the cached package.
49 50 51 52 |
# File 'lib/jammit/controller.rb', line 49 def prefix_url(path) host = request.port == 80 ? request.host : request.host_with_port "#{request.protocol}#{host}#{path}" end |


conda-forge ‘gotchas’¶
Using multiple channels¶
It is quite common to install a package from conda-forge and, when trying to use it, see an error like (OS X example):
ImportError: dlopen(.../site-packages/rpy2/rinterface/_rinterface.so, 2): Library not loaded: @rpath/libicuuc.54.dylib
Referenced from: .../site-packages/rpy2/rinterface/_rinterface.so
Reason: image not found
That happens because either the correct version of icu
,
or any other package in the error,
is not present or the package is missing altogether.
Once can confirm by issuing the command conda list
and searching for the package in question.
Why that happens?¶
The conda-forge
and defaults
are not 100% compatible.
In the example above it is known that defaults
uses icu 54.*
while conda-forge
relies on icu 56.*
,
that mismatch can lead to errors when the install environment is mixing packages from multiple channels.
Note: All of conda-forge software pinning can be found at: https://github.com/conda-forge/conda-forge-pinning-feedstock/blob/master/recipe/conda_build_config.yaml
How to fix it?¶
Newer conda
versions introduced a channel priority feature.
See https://conda.io/docs/channels.html for more information.
One possible solution is to add the conda-forge
channel on top of defaults
in your condarc
file when using conda-forge
packages.
This will ensuring that all the dependencies will come from the conda-forge
channel.
Here is how a .condarc
file would look like:
$ cat .condarc
channels:
- conda-forge
- defaults
In addition to the channel priority we recommend to always install your packages inside a new environment instead the root environment from anaconda/miniconda. Using envs make it easier to debug problems with packages and ensure the stability of your root env.
Using a fork vs a branch when updating a recipe¶
All maintainers are given push access to the feedstocks that they maintain. This means that a maintainer can create branches in the main repo. For updates, using a branch in the main repo is discouraged because,
CI is run on both the branch and the PR.
This wastes Appveyor and Travis-CI resources.
Branches are automatically published.
This means if you push a version update to a branch and then create a PR, conda packages will be published to anaconda.org before the PR is merged.
For these reasons maintainers are asked to fork the feedstock, push to a branch in the fork and then open a PR to the conda-forge
repo.
Branches in the main repo are used for,
Maintaining a LTS branch of a package.
For eg.
master
branch ofpython-feedstock
builds3.6.x
, while3.5
branch builds3.5.x
versions of python.


WITNESS LIST Revenue & Public Education Funding, Select Committee March 12, 1997-11:00A Appraisal Districts On: Hamilton, Billy (Comptroller's Office) Wilson, Dan (Comptroller's Office) Wooten, Tim (Comptroller's Office) Tax Reform On: Hazelton, Jared E. (himself;economist)


Navigate with WASD or the arrow keys. Try to get the free block without hitting your own tail or the wall! Don't forget to add a name for the high score list!


Money Play. How should Red play 64?
pips Red=106 White=130
(CorrectAnswer= 0/0, ErrorScore= 0)
I am glad to see from the comments that everyone shared my blunder!
I disobeyed my rule of thumb (be very wary of running when the opponent has a four-point home board and no dead checkers) and ran 20/10. I still won the game but XG really doesn't like 20/10.
The prosaic 8/2, 6/2 is 0.095 better. Maybe the rule of thumb should be ‘go when you have to'?
I disobeyed my rule of thumb (be very wary of running when the opponent has a four-point home board and no dead checkers) and ran 20/10. I still won the game but XG really doesn't like 20/10.
The prosaic 8/2, 6/2 is 0.095 better. Maybe the rule of thumb should be ‘go when you have to'?
1. Cubeful 2-ply 9/5 Eq.: -0.166 0.453 0.037 0.001 - 0.547 0.057 0.000 2. Cubeful 2-ply 10/8 9/8 6/5 Eq.: -0.257 (-0.090) 0.434 0.034 0.001 - 0.566 0.098 0.000 3. Cubeful 2-ply 10/9(2) 5/4(2) Eq.: -0.299 (-0.132) 0.380 0.021 0.000 - 0.620 0.046 0.000 4. Cubeful 2-ply 10/8(2) Eq.: -0.315 (-0.149) 0.410 0.030 0.001 - 0.590 0.107 0.000 5. Cubeful 2-ply 10/9 3/2(3) Eq.: -0.324 (-0.158) 0.401 0.029 0.001 - 0.599 0.101 0.000


TECHO ASFM is a student group that wants to end extreme poverty in Nuevo León and Latin America. Help us fund our emergency housing constructions and other community projects.
The SAT is a standardized test that is a core component of your college application both for US and colleges in Mexico (including TEC).
René and Eugenio excel in the SAT Math section. Eugenio scored a perfect 800 in the Math section of the SAT he took in June, while René achieved a score of 770 in the May exam. They also have extensive school exposure in mathematics, they will both graduate high school having taken AP Calculus BC and AP Statistics.
CloseRené and Eugenio are experts in the SAT Reading and Writing section. Having previously struggled with the section, René Martínez consistently scores 700+ in all of his practice exams having started out with a 570. In both SAT exams he took, Eugenio achieved a Reading and Writing score of over 700, placing him in the 98th percentile among all SAT test takers. Additionally, Eugenio has taken two AP English classes and René is taking one his senior year giving them the experience needed to help with essay coaching.
Close


{%extends "layout.html" %} {%block bl1%}
We are a small group who are fond of to making webapp thankyou. My name is Abhishek verma.


Through this effect the default actions are canceled. Use it to avoid an object to be consumed automatically from the scene while executing a "take" action, or to avoid consuming from the inventory an object by using the action "give to".
Create an effect cancel action:


Welcome to Project Portal.
Project Portal offers realtime messaging with all your friends and gives you a lot of customizations to use in all your chats.
Login or signup on the right.
warning
...


package lib
- Alphabetic
- By Inheritance
- lib
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Value Members
-
object
ConnectedComponents
Connected components algorithm.
-
object
LabelPropagation
Label Propagation algorithm.
-
object
PageRank extends Logging
PageRank algorithm implementation.
PageRank algorithm implementation. There are two implementations of PageRank implemented.
The first implementation uses the standalone
Graph
interface and runs PageRank for a fixed number of iterations:var PR = Array.fill(n)( 1.0 ) val oldPR = Array.fill(n)( 1.0 ) for( iter <- 0 until numIter ) { swap(oldPR, PR) for( i <- 0 until n ) { PR[i] = alpha + (1 - alpha) * inNbrs[i].map(j => oldPR[j] / outDeg[j]).sum } }
The second implementation uses the
Pregel
interface and runs PageRank until convergence:var PR = Array.fill(n)( 1.0 ) val oldPR = Array.fill(n)( 0.0 ) while( max(abs(PR - oldPr)) > tol ) { swap(oldPR, PR) for( i <- 0 until n if abs(PR[i] - oldPR[i]) > tol ) { PR[i] = alpha + (1 - \alpha) * inNbrs[i].map(j => oldPR[j] / outDeg[j]).sum } }
alpha
is the random reset probability (typically 0.15),inNbrs[i]
is the set of neighbors which link toi
andoutDeg[j]
is the out degree of vertexj
.- Note
This is not the "normalized" PageRank and as a consequence pages that have no inlinks will have a PageRank of alpha.
-
object
SVDPlusPlus
Implementation of SVD++ algorithm.
-
object
ShortestPaths extends Serializable
Computes shortest paths to the given set of landmark vertices, returning a graph where each vertex attribute is a map containing the shortest-path distance to each reachable landmark.
-
object
StronglyConnectedComponents
Strongly connected components algorithm implementation.
-
object
TriangleCount
Compute the number of triangles passing through each vertex.
Compute the number of triangles passing through each vertex.
The algorithm is relatively straightforward and can be computed in three steps:
- Compute the set of neighbors for each vertex
- For each edge compute the intersection of the sets and send the count to both vertices.
- Compute the sum at each vertex and divide by two since each triangle is counted twice.
There are two implementations. The default
TriangleCount.run
implementation first removes self cycles and canonicalizes the graph to ensure that the following conditions hold:- There are no self edges
- All edges are oriented (src is greater than dst)
- There are no duplicate edges
However, the canonicalization procedure is costly as it requires repartitioning the graph. If the input data is already in "canonical form" with self cycles removed then the
TriangleCount.runPreCanonicalized
should be used instead.val canonicalGraph = graph.mapEdges(e => 1).removeSelfEdges().canonicalizeEdges() val counts = TriangleCount.runPreCanonicalized(canonicalGraph).vertices