koyama41
もし本当に「リストの長さが違っていて長い方のリストの後ろの方に Nothing がある場合も Nothing」にしたいなら、先にそれぞれ sequence してから liftA2 zip して fmap fromList すればよさそうですね
fmap fromList $ liftA2 zip (sequence keys) (sequence values)
fromList <$> liftA2 zip (sequence keys) (sequence values)
と書きたいか^^;fromList <$> (zip <$> sequence keys <*> sequence values)
ですね、はい^^;some :: (Ord key) => [Maybe key] -> [Maybe value] -> Maybe (M.Map key value) some keys values = M.fromList <$> zipWithM f keys values where f :: Maybe key -> Maybe value -> Maybe (key, value) f mkey mvalue = (,) <$> mkey <*> mvalue
foldM step (M.empty,values) keys >>= (\(acc,l) -> acc <$ sequence_ l) where step (!acc, []) mkey = (acc, []) <$ mkey step (!acc, mval:vals) mkey = (,vals) <$> (M.insert <$> mkey <*> mval <*> pure acc)
あ、ちなみに今回の僕のケースだとkeysとvaluesでサイズが違う場合があります
pairWith f (Just x) (Just y) = Just (f x y) pairWith _ _ _ = Nothing pair = pairWith (,) left = pairWith const -- right = pairWith (flip const) cross f g (x, y) = (f x, g y) some :: [Maybe a] -> [Maybe b] -> Maybe [(a, b)] some xs ys = sequence ps `left` sequence rs where dummy = repeat (Just undefined) (ps, rs) = go xs ys [] go [] ys ps = (ps, zipWith pair dummy ys) go xs [] ps = (ps, zipWith pair xs dummy) go (x:xs) (y:ys) ps = cross (pair x y:) id $ go xs ys ps
Just undefined
で詰めるんですね^^;(<:>) = liftA2 (:) (<.>) = liftA2 (,) left = liftA2 const some :: [Maybe a] -> [Maybe b] -> Maybe [(a,b)] some (x:xs) (y:ys) = (x <.> y) <:> some xs ys some [] ys = Just [] `left` sequence ys some xs [] = Just [] `left` sequence xs
<,>
が作りたかったけどカンマは無理だった…import Data.Map (Map) import qualified Data.Map as M some :: Ord k => ([Maybe k], [Maybe v]) -> Maybe (Map k v) some = hylo phi z psi where z = Just M.empty phi (Just Nothing, _) _ = Nothing phi (_, Just Nothing) _ = Nothing phi _ Nothing = Nothing phi (Nothing, _) _ = z phi (_, Nothing) _ = z phi (Just (Just k), Just (Just v)) (Just m) = Just (M.insert k v m) psi ([], []) = Nothing psi (k:ks, []) = Just ((Just k, Nothing), (ks, [])) psi ([], v:vs) = Just ((Nothing, Just v), ([], vs)) psi (k:ks,v:vs) = Just ((Just k, Just v), (ks,vs)) hylo :: (b -> c -> c) -> c -> (a -> Maybe (b, a)) -> a -> c hylo phi z psi x = case psi x of Nothing -> z Just (y, x') -> phi y (hylo phi z psi x')
buildMap :: Ord k => ([Maybe k], [Maybe v]) -> Maybe (Map k v) buildMap = hylo phi psi where z = Just M.empty phi Nil = z phi (Cons (Just Nothing, _) _ ) = Nothing phi (Cons (_, Just Nothing) _ ) = Nothing phi (Cons _ Nothing) = Nothing phi (Cons (Nothing, _) _ ) = z phi (Cons (_, Nothing) _ ) = z phi (Cons (Just (Just k), Just (Just v)) (Just m)) = Just (M.insert k v m) psi ([], []) = Nil psi (k:ks, []) = Cons (Just k, Nothing) (ks, []) psi ([], v:vs) = Cons (Nothing, Just v) ([], vs) psi (k:ks,v:vs) = Cons (Just k, Just v) (ks,vs)


| F1 | Displays this Help | |
| F2 | ||
| F3 | ||
| F4 | ||
| F5 | Decreases font size | |
| F6 | Increases font size |
| DEG | Degrees |
| RAD | Radians |
| GRAD | Gradians |
| None | No special format |
| FIX | Fixed decimal places (ARG) |
| SCI | Scientiﬁc notation (ARG) |
| ENG | Engineering notation (ARG) |
| ' ' | as | |
| & | as & | |
| > | as > | |
| < | as < | |
| ▼ | as ▼ | |
| ▲ | as ▲ | |
| ↓ | as ↓ | |
| ↑ | as ↑ | |
| ← | as ← | |
| → | as → | |
| ∫ | as ∫ | |
| ± | as ± | |
| ÷ | as ÷ | |
| × | as × | |
| Σ | as Σ |
| Ä | U+00C4 | |
| Å | U+00C5 | |
| Æ | U+00C6 | |
| Ñ | U+00D1 | |
| Ö | U+00D6 | |
| Ü | U+00DC | |
| ᴇ | U+1D07 |
| ﬁ | U+FB01 | |
| ﬂ | U+FB02 |
| Σ | U+03A3 | |
| μ | U+03BC | |
| π | U+03C0 | |
| Γ | U+0393 (Transliterated) | |
| θ | U+03B8 (Transliterated) |
| — | U+2014 | |
| ’ | U+2019 | |
| … | U+2026 | |
| ¿ | U+00BF |
| ← | U+2190 | |
| ↑ | U+2191 | |
| → | U+2192 | |
| ↓ | U+2193 | |
| ↲ | U+21B2 |
| ° | U+00B0 | |
| × | U+00D7 | |
| ÷ | U+00F7 | |
| √ | U+221A | |
| ∡ | U+2220 or U+2221 | |
| ∫ | U+222B | |
| ≠ | U+2260 | |
| ≤ | U+2264 | |
| ≥ | U+2265 | |
| ␊ | U+240A | |
| ␛ | U+241B | |
| £ | U+00A3 |
| ▒ | U+2592 | |
| ■ | U+25A0 | |
| ▶ | U+25B6 | |
| ▼ | U+25BC | |
| ▲ | U+25B2 | |
| ◄ | U+25C4 |


001 /* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the "License"); 007 * you may not use this file except in compliance with the License. 008 * You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018 /* 019 * $Id: DTMStringPool.java<PHONE_NUMBER>-10-28 07:07:05Z minchau $ 020 */ 021 022 package org.apache.xml.dtm.ref; 023 024 import java.util.Vector; 025 026 import org.apache.xml.utils.IntVector; 027 028 /**
DTMStringPool is an "interning" mechanism for strings. It will 029 * create a stable 1:1 mapping between a set of string values and a set of 030 * integer index values, so the integers can be used to reliably and 031 * uniquely identify (and when necessary retrieve) the strings.
 032 * 033 *
Design Priorities: 034 *
 035 *
String-to-index lookup speed is critical.
 036 *
Index-to-String lookup speed is slightly less so.
 037 *
Threadsafety is not guaranteed at this level. 038 * Enforce that in the application if needed.
 039 *
Storage efficiency is an issue but not a huge one. 040 * It is expected that string pools won't exceed about 2000 entries.
 041 *
 042 *
 043 * 044 *
Implementation detail: A standard Hashtable is relatively 045 * inefficient when looking up primitive int values, especially when 046 * we're already maintaining an int-to-string vector. So I'm 047 * maintaining a simple hash chain within this class.
 048 * 049 *
NOTE: There is nothing in the code that has a real dependency upon 050 * String. It would work with any object type that implements reliable 051 * .hashCode() and .equals() operations. The API enforces Strings because 052 * it's safer that way, but this could trivially be turned into a general 053 * ObjectPool if one was needed.
 054 * 055 *
Status: Passed basic test in main().
 056 * */ 057 public class DTMStringPool 058 { 059 Vector m_intToString; 060 static final int HASHPRIME=101; 061 int[] m_hashStart=new int[HASHPRIME]; 062 IntVector m_hashChain; 063 public static final int NULL=-1; 064 065 /** 066 * Create a DTMStringPool using the given chain size 067 * 068 * @param chainSize The size of the hash chain vector 069 */ 070 public DTMStringPool(int chainSize) 071 { 072 m_intToString=new Vector(); 073 m_hashChain=new IntVector(chainSize); 074 removeAllElements(); 075 076 // -sb Add this to force empty strings to be index 0. 077 stringToIndex(""); 078 } 079 080 public DTMStringPool() 081 { 082 this(512); 083 } 084 085 public void removeAllElements() 086 { 087 m_intToString.removeAllElements(); 088 for(int i=0;i<HASHPRIME;++i) 089 m_hashStart[i]=NULL; 090 m_hashChain.removeAllElements(); 091 } 092 093 /** @return string whose value is uniquely identified by this integer index. 094 * @throws java.lang.ArrayIndexOutOfBoundsException 095 * if index doesn't map to a string. 096 * */ 097 public String indexToString(int i) 098 throws java.lang.ArrayIndexOutOfBoundsException 099 { 100 if(i==NULL) return null; 101 return (String) m_intToString.elementAt(i); 102 } 103 104 /** @return integer index uniquely identifying the value of this string. */ 105 public int stringToIndex(String s) 106 { 107 if(s==null) return NULL; 108 109 int hashslot=s.hashCode()%HASHPRIME; 110 if(hashslot<0) hashslot=-hashslot; 111 112 // Is it one we already know? 113 int hashlast=m_hashStart[hashslot]; 114 int hashcandidate=hashlast; 115 while(hashcandidate!=NULL) 116 { 117 if(m_intToString.elementAt(hashcandidate).equals(s)) 118 return hashcandidate; 119 120 hashlast=hashcandidate; 121 hashcandidate=m_hashChain.elementAt(hashcandidate); 122 } 123 124 // New value. Add to tables. 125 int newIndex=m_intToString.size(); 126 m_intToString.addElement(s); 127 128 m_hashChain.addElement(NULL); // Initialize to no-following-same-hash 129 if(hashlast==NULL) // First for this hash 130 m_hashStart[hashslot]=newIndex; 131 else // Link from previous with same hash 132 m_hashChain.setElementAt(newIndex,hashlast); 133 134 return newIndex; 135 } 136 137 /** Command-line unit test driver. This test relies on the fact that 138 * this version of the pool assigns indices consecutively, starting 139 * from zero, as new unique strings are encountered. 140 */ 141 public static void main(String[] args) 142 { 143 String[] word={ 144 "Zero","One","Two","Three","Four","Five", 145 "Six","Seven","Eight","Nine","Ten", 146 "Eleven","Twelve","Thirteen","Fourteen","Fifteen", 147 "Sixteen","Seventeen","Eighteen","Nineteen","Twenty", 148 "Twenty-One","Twenty-Two","Twenty-Three","Twenty-Four", 149 "Twenty-Five","Twenty-Six","Twenty-Seven","Twenty-Eight", 150 "Twenty-Nine","Thirty","Thirty-One","Thirty-Two", 151 "Thirty-Three","Thirty-Four","Thirty-Five","Thirty-Six", 152 "Thirty-Seven","Thirty-Eight","Thirty-Nine"}; 153 154 DTMStringPool pool=new DTMStringPool(); 155 156 System.out.println("If no complaints are printed below, we passed initial test."); 157 158 for(int pass=0;pass<=1;++pass) 159 { 160 int i; 161 162 for(i=0;i<word.length;++i) 163 { 164 int j=pool.stringToIndex(word[i]); 165 if(j!=i) 166 System.out.println("\tMismatch populating pool: assigned "+ 167 j+" for create "+i); 168 } 169 170 for(i=0;i<word.length;++i) 171 { 172 int j=pool.stringToIndex(word[i]); 173 if(j!=i) 174 System.out.println("\tMismatch in stringToIndex: returned "+ 175 j+" for lookup "+i); 176 } 177 178 for(i=0;i<word.length;++i) 179 { 180 String w=pool.indexToString(i); 181 if(!word[i].equals(w)) 182 System.out.println("\tMismatch in indexToString: returned"+ 183 w+" for lookup "+i); 184 } 185 186 pool.removeAllElements(); 187 188 System.out.println("\nPass "+pass+" complete\n"); 189 } // end pass loop 190 } 191 }


Michelle O’Neill retained Sinn Fein vice presidency with two thirds of vote
Michelle O’Neill was re-elected as the party’s vice-president last weekend.
by Press AssociationSINN FÉIN HAS revealed that Michelle O’Neill held on to her post as the party’s vice president with two thirds of the vote.
The party initially refused to disclose how many votes O’Neill and John O’Dowd received in the race for the position.
The outcome was announced on Saturday at the party’s Ard Fheis in Derry but the breakdown of the vote among party members was not, prompting accusations of a lack of transparency.
Sinn Fein president Mary-Lou McDonald insisted the vote was in line with party procedures.
“The result is known, you all know the result, the process is an internal one and it’s now concluded,” she said.
However Danny Morrison, the party’s former publicity director, revealed the voting figures in a tweet on Friday morning.
According to the post, O’Neill received 493 votes to O’Dowd’s 241, indicating she had taken 67% of the vote, compared to 32% for O’Dowd.
Former Stormont education minister O’Dowd signalled his ambition to replace O’Neill in the senior leadership role in August.


Atlantic City, New Jersey
Chef Vola's
If it feels like a speakeasy, that’s because it probably was one.
by lukefaterThere’s an “air of secrecy” surrounding certain establishments, then there’s Chef Vola’s. This unmarked, cash-only feasting hall has no advertised phone number, email, or website, equated by one New York Times food critic to “a game of hide and seek.” The space comes by it naturally: It was likely once a speakeasy.
Before it became a restaurant in 1921, the building that now houses Chef Vola’s was a rooming house owned by brothers Joe and Pina Vola. Joe took to cooking nightly dinners for their tenants while selling liquor in the basement, the restaurant’s current owner told the Press of Atlantic City. With infamous mayor Enoch “Nucky” Johnson—the true-life figure of Boardwalk Empire fame—living a block away, it’s likely he paid a visit or two in his time. Ironically, the restaurant today is B.Y.O.B.
After decades of selling consistently outstanding Italian classics in monstrous portions in their no-frills location blocks from the boardwalk, Chef Vola’s now requires patrons to place reservations months in advance to get a table. If it’s become exclusive, it’s only by virtue of its own popularity, the restrictions of a 65-seat dining room, and its loyalty to longstanding customers. Run by the Esposito family since 1982, the husband-and-wife-led team won a James Beard “American Classics” Award in 2011 for upholding a menu and ambience that would make an Italian-American grandma feel right at home.
For those who do manage to get a table in the bustling and tightly-packed dining room, the veal parm stands out as Vola’s marquee dish, while the crab cakes sprinkled with olive oil and the cannellini green bean salad with provolone are close contenders. And for what it’s worth, legend has it Frank Sinatra asked to be buried with one of Chef Vola’s banana cream pies.
Community Discussion
-
No Comments Yet
Start the discussion. forum Visit our forums.
Sources
- https://www.pressofatlanticcity.com/news/local/atlantic-city-s-prohibition-era-landmarks-stand-as-unchanged-reminders/article_94757680-6ca5-11e1-b0cc-001871e3ce6c.html
- https://www.inquirer.com/philly/blogs/the-insider/Now-youll-NEVER-get-into-Chef-Vola-again.html
- https://dinersjournal.blogs.nytimes.com/2006/08/09/hide-and-seek-in-atlantic-city/
- https://www.new-jersey-leisure-guide.com/chef-volas.html
- https://www.nj.com/jerseysbest/2016/03/njs_best_italian_restaurant_inside_the_legendary_c.html


0x03
30-Sep-18 09:22 AM
@ComputerGenie 👴👴👴 anyways i'm sure in any american 'chinatown' district i'll get better 'cultural food' than we get here
so ... while you may bastardize cultural food in popular culture (yes taco bell)
you have a way of 'preserving' more of the culture of the food than we have... lets stay at the chopsuey dudes
any chopsuey you can buy here is 'lets try to make authentic chop suey with the stuff we get here'
which works for vegetables
but not for soy/fish/whatever sauce


Manage Contractor
Home > Manage Contractor
Contractor {{ contractor.username }}
Username
: {{ contractor.username }}
Password
: {{ contractor.password }}
Phone
: {{ contractor.phone }}
Email
: {{ contractor.email }}
Street Name
: {{ contractor.address.street_name }}
Block No
: {{ contractor.address.block_no }}
Postal Code
: {{ contractor.address.postal_code }}
Country
: {{ contractor.address.country }}
Full Address
: {{ contractor.address.full_address }}
Company Logo
: {{ contractor.profile_picture.name }}
Description
: {{ contractor.description }}
Company
: {{ contractor.company }}
Position
: {{ contractor.position }}
Role
: {{ contractor.role }}
Active
: Yes
: No
Activate contractor {{ contractor.username }}
Are you sure want to activate contractor {{ contractor.username }}
Deactive contractor {{ contractor.username }}
Are you sure want to deactivate contractor {{ contractor.username }}


{{site.user_description}}
I have worked with multiple design languages, frameworks, and some design libraries including UIKit and Semantic UI!
These are just some of the languages I utilize consistently for work, school, and free time.
Other tools include Jenkins, SonarQube, NPM, MySQL Workbench, SQL Server Management Studio, and Oracle SQL Developer.


When defining classes in comb
there are two root level properties you can define, instance
and static
.
The optional instance object is used to define properties and methods on an instance of a class.
The optional static property is used to define class level methods and properties than can be used without an instance of a class.
comb.define(null, {
instance : {//Define your instance methods and properties}
static : {//Define your static methods and properties}
});
Lets start of by defining the class Mammal that will be used as the parent for other classes.
var Mammal = comb.define(null, {
instance : {
_type : "mammal",
_sound : " *** ",
constructor: function(options) {
options = options || {};
this._super(arguments);
var type = options.type, sound = options.mammal;
type && (this._type = type);
sound && (this._sound = sound);
},
speak : function() {
return "A mammal of type " + this._type;
}
}
});
Next lets define two implementing classes, Wolf and Dog. This example is a little contrived as Dog could inherit from Wolf.
var Wolf = comb.define(Mammal, {
instance: {
_type : "wolf",
_sound : "howl",
speak : function() {
return this._super(arguments) + " that " + this._sound + "s";
},
howl : function(){
console.log("Hoooooooooooowl!")
}
}
});
var Dog = comb.define(Mammal, {
instance: {
_type : "dog",
_sound : "bark",
speak : function() {
return this._super(arguments) + ", thats domesticated";
},
woof : function(){
console.log("Wooooooof!")
}
}
});
Wolf
and Dog
inherit from Mammal
, which means that they are both an instanceof Mammal
. Notice that both Wolf
and Dog
override the Mammal
default values type
and sound
with their own values.
speak : function() {
return this._super(arguments) + " that " + this._sound + "s";
}
Wolf
and Dog
also override the speak
method, in order to invoke the parents implementation the method _super
is invoked. _super
traverses the inheritance chain and returns the value. So for both Dog
and Wolf
they called _super and appended their own message to their parents message.
//1. Create a dog and make him speak
var myDog = new Dog();
myDog.woof() //prints Wooooooof!
myDog.speak();
//=> A mammal of type dog, thats domesticated
//2. Create a wolf and make him speak
var myWolf = new Wolf();
myWolf.howl() //prints "Hoooooooooooowl!"
myWolf.speak();
//=> A mammal of type wolf that howls
//3. Create a DogWolf that inherits from Dog, and mixes in Wolf
var DogWolf = comb.define([Dog, Wolf]);
var myDogWolf = new DogWolf();
myDogWolf.woof() //prints Wooooooof!
myDogWolf.howl() //prints "Hoooooooooooowl!"
myDogWolf.speak();
//=> A mammal of type wolf, thats domesticated that howls
//4. Create a WolfDog that inherits from Wolf, and mixes in Dog
var WolfDog = comb.define([Wolf, Dog]);
var myWolfDog = new WolfDog();
myWolfDog.woof() //prints Wooooooof!
myWolfDog.howl() //prints "Hoooooooooooowl!"
myWolfDog.speak();
//=> A mammal of type dog that barks, thats domesticated
1 and 2 : We created instances of Dog
and Wolf
and made them speak. Notice that the return value of the speak()
method is the return value of Mammal
's speak method concatenated with the implementing classes own message.
3 and 4 Ok, this is where it gets interesting, so lets break it down line by line.
var DogWolf = comb.define([Dog, Wolf]);
This line defines a new class aptly named DogWolf
. The DogWolf
class is an instanceof Dog
but mixes in Wolf
. What does that mean?
var myDogWolf = new DogWolf();
myDogWolf instanceof Dog //=> true
myWolfDog instanceof Wolf //=> false
So Wolf
is mixed so we can get the howl
method.
myDogWolf.speak();
//=> A mammal of type wolf, thats domesticated that howls
So when myDogWolf
speaks it invokes the speak functionality of Wolf
->Dog
->Mammal
. The order of inheritance is important to keep in mind when designing your classes the inheritance chain will happen in reverse, starting with the last mixin traversing the inheritance chain until either _super
is not invoked or the parent of the super class is reached, in this case Mammal
.
So lets add some public properties to Wolf
and Dog
.
var Wolf = comb.define(Mammal, {
instance:{
_type:"wolf",
_sound:"howl",
__color:"grey",
speak:function () {
return this._super(arguments) + " that " + this._sound + "s";
},
howl:function () {
console.log("Hoooooooooooowl!")
},
setters:{
color:function (color) {
if (comb.isString(color)) {
this.__color = color;
if (color === "white") {
this._sound = "LOUD howl";
}
}else{
throw new TypeError("Color must be a String");
}
}
},
getters:{
color:function () {
return this.__color;
}
}
}
});
var Dog = comb.define(Mammal, {
instance:{
_type:"dog",
_sound:"bark",
__breed:null,
constructor : function(opts){
opts = opts || {};
!comb.isUndefinedOrNull(opts.breed)
&& (this.breed = opts.breed);
this._super(arguments);
},
speak:function () {
return this._super(arguments) + ", thats domesticated";
},
woof:function () {
console.log("Wooooooof!")
},
setters:{
breed:function (breed) {
if (comb.isString(breed)) {
this.__breed = breed;
} else {
throw new TypeError("Breed must be a String");
}
}
},
getters:{
breed:function () {
return this.__breed;
},
foundOldManInWell:function () {
return "collie" === this.__breed;
}
}
}
});
So we added a setter
and getter
for color
to the Wolf
class. The advantage of adding setters
and getters
is that it allows you to add logic when setting/getting properties. When setting the color
property on Wolf
we check that it is a string and we change our sound depending on the color
of the Wolf
. If you supply a getter
for a property and not a corresponding setter
it will be read only(e.g. the Dog
s foundOldManInWell
property is read only), the same applies for supplying only a setter
. Lets try the getters and setters out.
var myDog = new Dog({breed : "beagle"});
console.log(myDog.breed); //prints beagle
console.log(myDog.foundOldManInWell); //prints false
myDog.breed = "collie";
console.log(myDog.breed); //prints collie
console.log(myDog.foundOldManInWell); //prints true
try {
myDog.breed = false;
} catch (e) {
console.error(e); //prints [TypeError: Breed must be a String]
}
try {
new Dog({breed : false});
} catch (e) {
console.error(e); //prints [TypeError: Breed must be a String]
}
As stated above comb.define
looks for an optional static property on the prototype
declaration of a class.
Lets modify Mammal
to include static properties.
var Mammal = comb.define(null, {
instance:{
_type:"mammal",
_sound:" *** ",
constructor:function (options) {
options = options || {};
this._super(arguments);
var myClass = this._static;
this._type = options.type || myClass.DEFAULT_TYPE;
this._sound = options.sound || myClass.DEFAULT_SOUND;
},
speak:function () {
return "A mammal of type " + this._type;
},
getter : {
type : function(){
return this._type;
}
}
},
static : {
DEFAULT_TYPE : "mammal",
DEFAULT_SOUND : " *** ",
soundOff : function() {
return "Im a mammal!!";
}
}
});
So we added two static properties to Mammal
, DEFAULT_TYPE
and DEFAULT_SOUND
. These properties can be accessed by instances through the this._static
property.
constructor:function (options) {
options = options || {};
this._super(arguments);
var myClass = this._static;
this._type = options.type || myClass.DEFAULT_TYPE;
this._type = options.sound || myClass.DEFAULT_SOUND;
}
So we refactored the constructor
function to leverage the new static properties when initializing itself. One example of using this initialization method is when you have properties that you want to be able to configure and apply to all instances of a class.
var myMammal = new Mammal();
console.log(myMammal.type); //prints mammal
Mammal.DEFAULT_TYPE = "whale";
myMammal = new Mammal();
console.log(myMammal.type); //prints whale
One neat thing about defining classes in comb
is that you not only get the advantages of inheritance in instance methods but static methods as well. So lets modify Dog
and Wolf
to take advantage of that.
var Wolf = comb.define(Mammal, {
instance:{
_type:"wolf",
_sound:"howl",
__color:"grey",
speak:function () {
return this._super(arguments) + " that " + this._sound + "s";
},
howl:function () {
console.log("Hoooooooooooowl!")
},
setters:{
color:function (color) {
if (comb.isString(color)) {
this.__color = color;
if (color === "white") {
this._sound = "LOUD howl";
}
} else {
throw new TypeError("Color must be a String");
}
}
},
getters:{
color:function () {
return this.__color;
}
}
},
static:{
soundOff:function () {
return comb.string.format("%s, %s", this._super(arguments), "I'm a Wolf");
}
}
});
var Dog = comb.define(Mammal, {
instance:{
_type:"dog",
_sound:"bark",
__breed:null,
constructor:function (opts) {
opts = opts || {};
!comb.isUndefinedOrNull(opts.breed) && (this.breed = opts.breed);
this._super(arguments);
},
speak:function () {
return this._super(arguments) + ", thats domesticated";
},
woof:function () {
console.log("Wooooooof!")
},
setters:{
breed:function (breed) {
if (comb.isString(breed)) {
this.__breed = breed;
} else {
throw new TypeError("Breed must be a String");
}
}
},
getters:{
breed:function () {
return this.__breed;
},
foundOldManInWell:function () {
return "collie" === this.__breed;
}
}
},
static:{
soundOff:function () {
return comb.string.format("%s, %s", this._super(arguments), "I'm a Dog");
}
}
});
When executing soundOff.
console.log(Mammal.soundOff());
console.log(Wolf.soundOff());
console.log(Dog.soundOff());
console.log(DogWolf.soundOff());
console.log(WolfDog.soundOff());
As you can see inheritance within the static methods follows the same order as it does within the instance methods.
Getters and setters are declared the same way in a static declaration as they are in an instance declaration.
One nuance about prototypal inheritance is that the scope in which a function is called is not consistent. For example, lets add a reproduce method to Mammal
.
var Mammal = comb.define(null, {
instance:{
_type:"mammal",
_sound:" *** ",
constructor:function (options) {
options = options || {};
this._super(arguments);
var myClass = this._static;
this._type = options.type || myClass.DEFAULT_TYPE;
this._sound = options.sound || myClass.DEFAULT_SOUND;
},
speak:function () {
return "A mammal of type " + this._type;
},
reproduce : function(){
return new Mammal();
},
getters:{
type:function () {
return this._type;
}
}
},
static:{
DEFAULT_TYPE:"mammal",
DEFAULT_SOUND:" *** ",
soundOff:function () {
return comb.string.format("Im a %s!!", this.DEFAULT_TYPE);
}
}
});
This is great except that it will only work for instances of Mammal
if we created a Dog
and asked it to reproduce it would return a Mammal
and not aDog
. Solution, change reproduce to:
reproduce : function(){
return new this._static();
}
This guarantees that you create an instance of your type. The same applies if you want to check if something is an instance of your current type. For example lets add a sameSpecies method to Mammal
.
sameSpecies : function(obj){
return obj instanceof this._static;
}
This comes in handy when dealing with multiple inheritance, and wanting to check if an object is of the same concrete class.
comb.define
also provides a mechanism for initializing when creating a class. init
will be called on creation of any class.
var Mammal = comb.define(null, {
instance:{
_type:"mammal",
_sound:" *** ",
constructor:function (options) {
options = options || {};
this._super(arguments);
var myClass = this._static;
this._type = options.type || myClass.DEFAULT_TYPE;
this._sound = options.sound || myClass.DEFAULT_SOUND;
},
speak:function () {
return "A mammal of type " + this._type;
},
reproduce : function(){
return new Mammal();
},
getters:{
type:function () {
return this._type;
}
}
},
static:{
soundOff:function () {
return comb.string.format("Im a %s!!", this.DEFAULT_TYPE);
},
init : function(){
this.DEFAULT_TYPE = "mammal";
this.DEFAULT_SOUND = " *** ";
}
}
});
Here we moved the DEFAULT_TYPE and DEFAULT_SOUND initializtion to the init
method.
MIT https://github.com/Pollenware/comb/raw/master/LICENSE
git clone git://github.com/Pollenware/comb.git


| Module::Build::Platform::VMS - Builder class for VMS platforms |
Module::Build::Platform::VMS - Builder class for VMS platforms
This module inherits from Module::Build::Base
and alters a few
minor details of its functionality. Please see the Module::Build manpage for
the general docs.
Change $self->{build_script} to 'Build.com' so @Build works.
'@Build foo' on VMS will not preserve the case of 'foo'. Rather than forcing people to write '@Build "foo"' we'll dispatch case-insensitively.
Use '__' instead of '::'.
Prefixify taking into account VMS' filepath syntax.
Command-line arguments (but not the command itself) must be quoted to ensure case preservation.
There is no native fork()
, so some constructs depending on it are not
available.
Override to ensure that we quote the arguments but not the command.
Local an executable program
Follows VMS naming conventions for executable files. If the name passed in doesn't exactly match an executable file, appends .Exe (or equivalent) to check for executable image, and .Com to check for DCL procedure. If this fails, checks directories in DCL$PATH and finally Sys$System: for an executable file having the name specified, with or without the .Exe-equivalent suffix.
Override to ensure that we quote the arguments but not the command.
Override to ensure that we do not quote the command.
Inherit the standard version but remove dots at end of name. If the extended character set is in effect, do not remove dots from filenames with Unix path delimiters.
Inherit the standard version but replace embedded dots with underscores because a dot is the directory delimiter on VMS.
Inherit the standard version but chop the extra manpage delimiter off the front if there is one. The VMS version of splitdir('[.foo]') returns '', 'foo'.
Inherit the standard version but relativize the paths as the native glob()
doesn't
do that for us.
The home-grown glob()
does not currently handle tildes, so provide limited support
here. Expect only UNIX format file specifications for now.
On VMS, $^X returns the fully qualified absolute path including version number. It's logically impossible to improve on it for getting the perl we're currently running, and attempting to manipulate it is usually lossy.
Convert the file path to the local syntax
Convert the directory path to the local syntax
The home-grown glob()
expands a bit too aggressively when given a bare name,
so default in a zero-length extension.
Michael G Schwern<EMAIL_ADDRESS>Ken Williams<EMAIL_ADDRESS>Craig A. Berry<EMAIL_ADDRESS>perl(1)
, Module::Build(3), ExtUtils::MakeMaker(3)
| Module::Build::Platform::VMS - Builder class for VMS platforms |


Education Levels
CitySDK & Angular Demo
Select a State
State:
Education
Displaying for
Education Level
Population Fraction [raw]
Population Fraction [Display]
{{eduLevel.perCapitaFormatted}}


Hello! My name is Fabian Vergara and I am a Software Engineering student at Concordia University, in Montreal, with emphasis in web services and applications. I am aiming to become a full-stack developer: from how data is handled and processed in the backend, to all the way to the UI/UX in the frontend. I don't exclude any branch in the development process of software. I've always seen myself as a dedicated person who loves knowledge, and also loves to apply that knowledge to relevant things. My career goal is to do something relevant that somehow could improve and have an impact in people's lives; as minimal as it could be. I enjoy participating in hackathons and coding side projects in my free time. I also enjoy photography and travelling! I finished my studies in Computer Science at Vanier College, in Montreal. My studies at Vanier College granted me a technical DEC (Diplome des Etudes Collegiales) which should compare to an associate degree in places outside Quebec. I am doing my bachelor at Concordia University to complete my education and knowledge. Just a curious fact about myself: I speak English, French and Spanish! So let we all communicate. By the way, this website is enterily hosted on a server located at my headquarters (just kidding, located in my home). It was set up, deployed and is currently maintained by me. If you were curious, I'm running Linux (Ubuntu) server, and apache web server. I test few technologies here... and I call it my playground. Welcome aboard. Click the buttom below to find some of the projects I've been working on!
Get Started!


--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/Physics.3F.html ---
Hey, I'm curious - are there any physicists here looking at formalising some of the vector algebra for quantum theory? I couldn't find anything related to e.g. Hilbert spaces.
A first year undergraduate student of mine formalised the definition of Hilbert spaces as part of their summer project, but I don't think there's anything in the official maths library.
I don't recall any physicists coming forward openly. But if you are one, you'd better beware.
https://github.com/ImperialCollegeLondon/xena-UROP-2018/blob/master/src/Banach%20spaces.lean and and there are inner product spaces too, but actually I don't see Hilbert space yet.
I’m pretty sure I fixed the issue with Hilbert space so hope to PR soon
Although I only have one trivial lemma about Hilbert Spaces specifically
Ok, thanks! I was looking at (maybe) formalising some results that require notions of a Hilbert space.
@Andreas Swerdlow do you mean it might be included in mathlib at some point?
Hopefully, but it probably needs some cleaning up
{% endraw %}Last updated: Apr 24 2020 at 19:02 UTC


Pentagon chief fires Navy secretary over SEAL controversy
by Robert Burns and Rob Gillies The Associated PressWASHINGTON — Defense Secretary Mark Esper has fired the secretary of the Navy in connection with the controversy over a SEAL whose case has been championed by President Donald Trump.
A Pentagon spokesman says in a statement Sunday that Esper has lost trust and confidence in Navy Secretary Richard Spencer “regarding his lack of candor” over conversations with the White House involving the handling of the SEAL case.
Spokesman Jonathan Hoffman says Spencer submitted his resignation at Esper’s request. Esper has also recommended to Trump a replacement.


Zest
Zest is an experimental specialized scripting language (also known as a domain-specific language)
originally developed by the Mozilla security team and is intended to be used in web oriented security tools.
It is included by default with ZAP.
Creating Zest scripts
There are a variety of ways to create Zest scripts:
Record a new Zest script Button
- Press the 'Record a new Zest script' button on the main toolbar
- Type in a suitable name for your script in the 'Add a Zest Script' dialog
- Select the prefix you want to record requests for, or leave blank to record all requests
- Press the 'Save' button
- The 'Record a new Zest script' button will stay pressed, change to 'Recording a new Zest script' and show a red icon.
The new Zest script will be shown in the Scripts tab with a red 'recording' icon.
Any requests that you make underneath the specified prefix will be added to the script.
Press the 'Recording a new Zest script' again to stop recording the requests.
Note that you can only record 'Stand Alone' Zest scripts in this way. If you want to create other types of Zest script you must use another mechanism.
You can also right click any Stand Alone Zest script and use the 'Start recording' and 'Stop recording' buttons.
New Script Button
- Navigate to the Scripts tree tab
- Press the 'New Script...' button
- Type in a suitable name for your script in the 'New Script' dialog
- Select the script type (see the Scripts add-on help page for more details)
- Select the Zest script engine
- Select one of the templates (if relevant)
- Press the 'Save' button
Any type of Zest script can be created this way.
Right clicking a Zest template
- Navigate to the Scripts tree tab
- Expand the 'Templates' node and find a template you want to use
- Right click on the template and select 'New Script...'
- Press the 'Save' button
Any type of Zest script can be created this way.
Right clicking requests
- Navigate to any tab that shows requests, such as the History tab
- Select one or more requests
- Right click on them
- Select the 'Add to Zest Script' menu which allows you to select an existing Stand Alone script or create a new one
Note that you can only add request to 'Stand Alone' Zest scripts.
Plug-n-Hack
If you are using a recent version of Firefox then you can create Zest scripts from within your browser.
- Press the 'Plug-n-Hack' button on the ZAP 'Quick Start' tab
- Install the Plug-n-Hack Firefox Add-on and accept all of the dialogs
- Press 'Shift F2' in Firefox to access the Developer Toolbar
- Type 'zap record on global' to start recording a new Zest script
- Any requests you make through ZAP will be added to the script
- Type 'zap record off global' to stop recording the script
Note that you can only record 'Stand Alone' Zest scripts in this way. If you want to create other types of Zest script you must use another mechanism.
Editing Zest scripts
Zest scripts are edited graphically in the Scripts tree tab.
Each statement is a node in the tree - double click nodes to edit the statement properties.
You can add, move and remove statements via right clicking the Zest nodes.
You can also add requests to 'Stand alone' Zest scripts by right clicking the requests in any of the other tabs.
There are also some right click options available when you select text in the Request or Response tabs.
Zest includes a set of 'built in' variables as well as allowing you to declare your own.
A right click menu is provided (where relevant) in the edit dialogs to allow you to paste in any of the available variable names.
External links


To sure calm much most long me mean. Able rent long in do we. Uncommonly no it announcing melancholy an in. Mirth learn it he given. Secure shy favour length all twenty denote. He felicity no an at packages answered opinions juvenile.
Old there any widow law rooms. Agreed but expect repair she nay sir silent person. Direction can dependent one bed situation attempted. His she are man their spite avoid. Her pretended fulfilled extremely education yet. Satisfied did one admitting incommode tolerably how are.
Folly was these three and songs arose whose. Of in vicinity contempt together in possible branched. Assured company hastily looking garrets in oh. Most have love my gone to this so. Discovered interested prosperous the our affronting insipidity day. Missed lovers way one vanity wishes nay but.
 Removing welcomed civility or hastened is. Justice elderly but perhaps expense six her are another passage. Full her ten open fond walk not down. For request general express unknown are. He in just mr door body held john down he. So journey greatly or garrets.
She literature discovered increasing how diminution understood. Though and highly the enough county for man. Of it up he still court alone widow seems. Suspected he remainder rapturous my sweetness. All vanity regard sudden nor simple can. World mrs and vexed china since after often.
To they four in love. Settling you has separate supplied bed. Concluded resembled suspected his resources curiosity joy. Led all cottage met enabled attempt through talking delight. Dare he feet my tell busy. Considered imprudence of he friendship boisterous.
Tak So if on advanced addition absolute received replying throwing he. Delighted consisted newspaper of unfeeling as neglected so. Tell size come hard mrs and four fond are. At quitting in strictly up wandered of relation answered felicity. Side need at in what dear ever upon if. Same down want joy neat ask pain help she. Alone three stuff use law walls fat asked. Near do that he help.
View fine me gone this name an rank. Compact greater and demands mrs the parlors. Park be fine easy am size away. Him and fine bred knew. randomtextgenerator Carriage quitting securing be appetite it declared. High eyes kept so busy feel call in. Would day nor ask walls known. But preserved advantage are but and certainty earnestly enjoyment. Passage weather as up am exposed. And natural related man subject. Eagerness get situation his was delighted. Advice me cousin an spring of needed. Tell use paid law ever yet new. Meant to learn of vexed if style allow he there. Tiled man stand tears ten joy there terms any widen. Procuring continued suspicion its ten. Pursuit brother are had fifteen distant has. Early had add equal china quiet visit. Appear an manner as no limits either praise in. In in written on charmed justice is amiable farther besides. Law insensible middletons unsatiable for apartments boy delightful unreserved.


FLIGHT LOGBOOK
DATE
TIME
WEATHER CONDITION
LOCATION
FLIGHT NUMBER
FLIGHT DURATION (MINUTES)
BATTERY NUMBER
A1
A2
A3
A4
CRASHED
REASON OF CRASH
DAMAGED
DAMAGE
FPV
VIDEO
VIDEO LINK
ADDITIONAL COMMENTS


A selection of my work as a product designer leading projects from research to implementation.
Anita's_Kitchen was a website for a restaurant where customers
were enables
to
make
food
orders from the variety of foods
availed by the hotel management.The site availed the
online
payment
system
and order.VISIT
ANITA'S_RESTAURANT
Movers was a project about transporting agency that offers
relocation
services
and
storage services to customers by
bringing the services to their door steps.VISIT
MOVERS
Fresher project was intended to be a website to generate
daily,monthly,yearly
reports on milk production and sales
in order to maintain transparency in the
business.VISIT
Freshers


{% include "site_base.html" %}
Applications: Employee Vehicles
| Employee No |
Employee Name |
Mobile Number |
Application Date |
Pass Number |
Process Application |
{% for reg in empl_regs %}
| {{reg.name}} |
{{reg.name}} |
{{reg.mobile_number}} |
{{reg.date_of_application}} |
{{reg.vehicle_pass_no}} |
Process
|
{% endfor %}
Applications: Student Vehicles
| Student Roll No |
Student Name |
Mobile Number |
Application Date |
Pass Number |
Process Application |
{% for reg in stud_regs %}
| {{reg.name}} |
{{reg.name}} |
{{reg.mobile_number}} |
{{reg.date_of_application}} |
{{reg.vehicle_pass_no}} |
Process
|
{% endfor %}


Greetings and Salutations from Buckingham Palace...
Her Royal Highness, Queen Victoria, would like to invite all subjects of the Realm (Past, Present and Future) to a public Symposium of the latest Steam Inventions and Contraptions by some of the Finest Minds around the World. Food, Magic, Merriment, Musicians and The Queen's Masquerade Ball promise Fun for All. The Gala Festivities with be held on the HMS Queen Mary on January 13-16, 2012.
LARP stands for Live Action Role Playing. That's what most LARPers will agree on. It is interactive improvisation, between people who are each playing a persona.
There's no script. You improvise all your lines. You don't operate in a vacuum, because you have a character description, a background history of who you're trying to be.
You're also not alone. Games can be small, with only a few characters, they can be large, with upwards of sixty or seventy players, or they can be huge. Games can last a few minutes, four, six, or eight hours, an entire weekend, or even longer, played in several sessions.
Most likely. If you have something, we'd like to hear about it. There's an easy bid process.
Volunteering is easy and fun. You don't need any experience, just a willingness to pitch in. There are jobs that need to be done before, during and after the con; by sharing the work, we all get a chance to enjoy the con.


@(title: String)
15 min left
Place a new order
Where to deliver? (Please be specific)
Tip amount:
Few words to the cook:


[gecode-users] Compilation problem with GecodeJ 1.0.0 (debian linux)
Guido Tack
tack at ps.uni-sb.de
Fri Oct 6 16:18:26 CEST 2006
Hi.
> Finally I managed to compile and run an example (thanks to
> Gregoire's help).
>
> I had to use the following options for configure :
>
> ./configure
> Gecode_CFLAGS="-I/home/szampelli/UCL/Recherche/Code/release-1.3.0/
> -I/home/szampelli/UCL/Recherche/Code/release-1.3.0/gecode/"
> Gecode_LIBS="-L/home/szampelli/UCL/Recherche/Code/release-1.3.0/
> -lgecodesearch -lgecodeint -lgecodeset -lgecodekernel -
> lgecodeminimodel"
Ok, you probably didn't have pkg-config installed, and that's why
configure complained to set those variables. I'm afraid that doesn't
work too well, it gives you exactly the problems you describe below.
I have updated the documentation to say that you need pkg-config to
install Gecode/J, as this makes life a lot easier.
> I has also to comment this depend in build.xml in order to get ant
> running :
>
> 35 <!-- <depend srcdir="."
> 36 destdir="build"
> 37 cache="depcache"
> 38 closure="yes"
> 39 />-->
On some systems, you need to install a package called ant-optional
(e.g. on Debian). This will give you the dependency checker. I'll add
that to the requirements, thanks.
Cheers,
Guido
--
Guido Tack
Programming Systems Lab, Saarland University, Germany
http://www.ps.uni-sb.de/~tack
More information about the gecode-users
mailing list


#*****************************************************************************
# misc.py (part of the spartan package)
#
# (c) 2013 - Augustine Dunn
# James Laboratory
# Department of Biochemistry and Molecular Biology
# University of California Irvine
#<EMAIL_ADDRESS>#
# Licensed under the GNU General Public License 3.0 license.
#******************************************************************************
"""
####################
misc.py
####################
Code facilitating random aspects of this package.
"""
import os
import sys
import inspect
import smtplib
import base64
import time
import re
from collections import defaultdict
[docs]def get_version_number(path_to_setup):
"""
Provides access to current version info contained in setup.py
"""
setup_path = path_to_setup
with open(setup_path, 'rb') as f:
match = re.search(
'\s*[\'"]?version[\'"]?\s*[=:]\s*[\'"]?([^\'",]+)[\'"]?',
f.read().decode('utf-8'), re.I)
if match:
version_string = match.group(1)
return version_string
else:
print("No version definition found in ", setup_path)
[docs]class Bunch(dict):
"""
A dict like class to facilitate setting and access to tree-like data. Allows access to dictionary keys through 'dot' notation: "yourDict.key = value".
"""
[docs] def __init__(self, *args, **kwds):
super(Bunch,self).__init__(*args,**kwds)
self.__dict__ = self
[docs]def bunchify(dict_tree):
"""
Traverses a dictionary tree and converts all sub-dictionaries to Bunch() objects.
"""
for k,v in dict_tree.iteritems():
if type(v) == type({}):
dict_tree[k] = bunchify(dict_tree[k])
return Bunch(dict_tree)
[docs]def whoami():
"""
Returns the name of the currently active function.
"""
return inspect.stack()[1][3]
[docs]def get_time():
"""
Return system time formatted as 'YYYY:MM:DD-hh:mm:ss'.
"""
t = time.localtime()
return time.strftime('%Y.%m.%d-%H:%M:%S',t)
def uniques(seq):
seen = set()
seen_add = seen.add
return [ x for x in seq if x not in seen and not seen_add(x)]
[docs]def slidingWindow(sequence,winSize,step=1):
"""Returns a generator that will iterate through
the defined chunks of input sequence. Input sequence
must be iterable."""
# Verify the inputs
try: it = iter(sequence)
except TypeError:
raise Exception("**ERROR** sequence must be iterable.")
if not ((type(winSize) == type(0)) and (type(step) == type(0))):
raise Exception("**ERROR** type(winSize) and type(step) must be int.")
if step > winSize:
raise Exception("**ERROR** step must not be larger than winSize.")
if winSize > len(sequence):
raise Exception("**ERROR** winSize must not be larger than sequence length.")
# Pre-compute number of chunks to emit
numOfChunks = ((len(sequence)-winSize)/step)+1
# Do the work
for i in range(0,numOfChunks*step,step):
yield sequence[i:i+winSize]
def fold_seq(seq, lineLen=70):
return [seq[i:i+lineLen] for i in xrange(0, len(seq), lineLen)]


Get insights that help your business grow.
Discover the benefits of data analytics and make better decisions regarding revenue, customer experience, and overall efficiency.
10k+
companies
314
templates
12M+
queries
Discover the benefits of data analytics and make better decisions regarding revenue, customer experience, and overall efficiency.
companies
templates
queries


| Interface | Description |
|---|---|
| model.ICarTransporter |
An interface for adding cars
|
| model.IMovable |
Reassures the that an object implements move functionality.
|
| Class | Description |
|---|---|
| model.Board |
Representation of an adjustable board
|
| model.Car |
A wheeled motor-driven vehicle
|
| model.CarCarrier |
A class that can hold cars.
|
| model.CarFerry |
A Ferry that transports cars
|
| model.CarTransporter |
A higher order representation of an abstract truck.
|
| MainMethodClass | |
| model.Maths |
Math helpers
|
| model.Ramp | |
| model.Saab95 |
A representation of a SAAB 95 car
|
| model.Scania |
A representation of a model.Scania truck.
|
| model.Vehicle |
A representation of a high level vehicle.
|
| model.Volvo240 |
A representation of a Volvo 240 car.
|


Going beyond CursorLoaders
19 Apr 2015CursorLoaders are a great way to load data from a content provider in the background while managing correctly the Activity lifecycle. When creating the CursorLoader in the onCreateLoader()
method, you specify a url, projections and selections with their arguments to be executed against the content provider and get result back. Once the query is executed in the background, a Cursor is returned to your activity via the onLoadFinished()
method. This is great but limited to one and only one query against the content provider.
Recently I needed to return the content of a directory from a content provider. I had to display the list of files as well as the parent folder (the directory itself).
In this article, I’m going to explain a simple way to go further with loaders by extending the AsyncTaskLoader class. As a result, we’ll be able to execute multiple queries as well as other long-lasting operations in the background.
Understanding
We are going to modify our activity to use our own implementation of the loader pattern. If you followed the tutorial on developer.android.com to query a content provider with CursorLoaders, your activity must be implementing the LoaderManager.LoaderCallbacks<D>
interface and override the three following methods:
public Loader<D> onCreateLoader(int id, Bundle args);
public void onLoadFinished(Loader<D> loader, D data);
public void onLoaderReset(Loader<D> loader);
Typically the interface Cursor is used for the generic part of the implementation (like this LoaderManager.LoaderCallbacks<Cursor>
) as the object returned by the Loader. Since we want to return more than one Cursor and perform more than one query operation in the background, we are going to use our own implementation of the Cursor interface thanks to the CursorWrapper class.
Setting up the activity
public class MainActivity implements LoaderManager.LoaderCallbacks<DirectoryCursor>
{
@Override
public Loader<DirectoryCursor> onCreateLoader (int loaderId, Bundle args)
{
return new DirectoryCursorLoader(this);
}
@Override
public void onLoadFinished (Loader<DirectoryCursor> loader, DirectoryCursor data)
{
if(data != null)
{
File directory = data.getDirectory(); // The directory item
mAdapter.changeCursor(data); // data is a Cursor containing the list of files inside that directory
}
}
@Override
public void onLoaderReset (Loader<DirectoryCursor> loader)
{
if (mAdapter != null)
mAdapter.changeCursor(null);
}
}
Now that the activity is set up, let’s implement the DirectoryCursor and DirectoryCursorLoader classes.
Using a different cursor
public class DirectoryCursor extends CursorWrapper
{
private final File directory;
public DirectoryCursor (File directory, Cursor childrenCursor)
{
super(childrenCursor);
this.directory = directory;
}
public File getDirectory()
{
return this.directory;
}
}
CursorWrapper is just a class implementing the Cursor interface. By extending it, we can override all the methods of the Cursor interface. In our case we don’t want to do any of that, we just want to add more data to the class. Inside the constructor, we are calling the super method with our cursor containing all the files belonging to the directory. This will insure a transparent implementation and will work exactly the same from a CursorAdapter standpoint.
Extending the AsyncTaskLoader
We are going to implement our DirectoryCursorLoader class which will load data in the background. This one is a little longer to implement. To achieve the following code, I’ve copied the source code of the CursorLoader class, removed the parts we didn’t need and then I’ve implemented the loadInBackground()
method which will be responsible of our custom logic. Let’s take a look at this class and the loadInBackgorund()
method:
public abstract class DirectoryCursorLoader extends AsyncTaskLoader<DirectoryCursor>
{
final ForceLoadContentObserver mObserver;
DirectoryCursor mCursor;
public DirectoryCursorLoader (Context context)
{
super(context);
mObserver = new ForceLoadContentObserver();
}
/* Runs on a worker thread */
@Override
public DirectoryCursor loadInBackground ()
{
DirectoryCursor directoryCursor = null;
Cursor parentCursor = null;
Cursor childrenCursor = null;
try
{
// Execute our first query against the content provider which will get the parent directory
parentCursor = getContext().getContentResolver().query([...]);
if (parentCursor != null && parentCursor.moveToFirst())
{
// Map the cursor to an object. This is basically getting all the columns from the cursor and setting them as instance variables inside our newly created File object.
File directory = new File(parentCursor);
// Execute our second query based on the result of the first one which will get the list of files belonging to the directory object
childrenCursor = getContext().getContentResolver().query([...]);
if (childrenCursor != null)
{
directoryCursor = new DirectoryCursor(directory, childrenCursor);
try
{
// Ensure the cursor window is filled.
directoryCursor.getCount();
directoryCursor.registerContentObserver(mObserver);
}
catch (RuntimeException ex)
{
directoryCursor.close();
throw ex;
}
}
}
}
finally
{
if(parentCursor != null)
parentCursor.close();
}
return directoryCursor;
}
@Override
protected void onStartLoading ()
{
if (mCursor != null)
{
deliverResult(mCursor);
}
if (takeContentChanged() || mCursor == null)
{
forceLoad();
}
}
@Override
protected void onStopLoading ()
{
cancelLoad();
}
@Override
public void onCanceled (DirectoryCursor cursor)
{
if (cursor != null && !cursor.isClosed())
{
cursor.close();
}
}
@Override
protected void onReset ()
{
super.onReset();
// Ensure the loader is stopped
onStopLoading();
if (mCursor != null && !mCursor.isClosed())
{
mCursor.close();
}
mCursor = null;
}
/* Runs on the UI thread */
@Override
public void deliverResult (DirectoryCursor cursor)
{
if (isReset())
{
// An async query came in while the loader is stopped
if (cursor != null)
{
cursor.close();
}
return;
}
Cursor oldCursor = mCursor;
mCursor = cursor;
if (isStarted())
{
super.deliverResult(cursor);
}
if (oldCursor != null && oldCursor != cursor && !oldCursor.isClosed())
{
oldCursor.close();
}
}
}
As you can see in the loadInBackground()
method, we’ve performed two different queries against the content provider. This is just an example of what you can do.
An other great use of this is creating sections in your listview. Instead of looping over all the entries in the cursor adapter to figure out which one are sections or to insert sections between different items in the UI Thread doing it in the loadInBackground()
method is way more efficient and will prevent jank.


Ocean [ao09], ocean, in The Outer Sea
Last updated Turn #135
Ocean [ao09], ocean, in The Outer Sea
------------------------------------------------------------------------
9: The Savvy Aardvark [ha5r], ship, 2 hulls, 1 rowing port, 6 sails,
9: 20% damaged, arrived from Ocean [ao08], owner:
9: Phantasm [n4b], Imperial Empire, duke, with two workers,
9: eight sailors
10: The Savvy Aardvark [ha5r], ship, 2 hulls, 1 rowing port, 6 sails,
10: 20% damaged, departed for Ocean [ao10].
Routes leaving Ocean:
North, to Ocean [an09], 6 days
East, to Ocean [ao10], 6 days
South, to Ocean [ap09], 6 days
West, to Ocean [ao08], 6 days


shopping_basket Shop Online
Using our convenient web app, you'll get all the power of gFood without having to call your order in. Order in your pajamas, order 24 hours a day, order on Christmas, we're here to serve you.
shopping_cartFast Delivery
You've never seen ordering this quick.  We'd ask what that is, but gFood respects your privacy.
paymentGreat Deals
Money: You've got it, we want it. But let it never be said we're not incredibly fair! Burger sales? Check. Pizza sales? Check. Burger and pizza sales?? Check, check, check! We seriously can't stop making deals.


Current bug lists
Prefix
- [Not sure] : Not sure whether it is a bug
- [Possible] : More probable than [Not sure]
- [Bug] : It is a bug and I know why
- [Improvement] : This is a fix to improve performance or something, but not a bug fix
- [Can't detect] : This is a bug, but I don't know how to detect it(maybe because it is more related with the program logic)
- [Don't understand] : Commit message define it a "bug fix", but I can't tell why
- [Warning] : This looks likes a bug BUT IT IS NOT
- [Ignore] : This is a bug, but not critical
Possible bug pattern
[Not sure]deserialize
https://github.com/avibryant/simmer/commit/fde08bac6e13d8c5dd96291bac217d15808dbc62
[Not sure]def/var
https://github.com/scala-js/scala-js-dom/commit/4b4a9ba1ba5755ac9ffccdf57835e4dfbcb2f7c4
[Not Sure]runtime reflection
https://github.com/scala/scala/commit/06e7e342d1e27097df0b9d0b31a322fd1cf0a34e
[Can't detect]bound check
https://github.com/twitter/algebird/commit/4987db1f5e55e5d47d37a8ab58a8edf49542ed0f
[Improvement]make serializable
https://github.com/twitter/algebird/commit/deedb2ab5e7f27cdf357797fe8df21a98df7e665
[Not sure]asInstanceOf is a bad habit
https://github.com/adamretter/Shadoop/commit/2094397e367c9895f1c3e033f80c3fa673895211
[Not sure]unintended Lazy captures
https://github.com/milessabin/shapeless/commit/78def231b91b45786aa9676fc1398b868056ac04
[Bug]use before init
https://github.com/fwbrasil/activate/commit/02f7ec4a005642b01b348bdaee11cf39a922cbc4
[Not Sure]import empty
https://github.com/fwbrasil/activate/commit/36995f1ead8b640fc879def63cde2770d465119f
[Improvement]singleton exception
https://github.com/fwbrasil/activate/commit/4182a0c82f64ce866844bf72e3f78269d3343004
[Possible]java.io.Serializable
https://github.com/fwbrasil/activate/commit/f36b8a797cfe345ea629269ab38aec96429f039b
[Improvement]remove redundent .type
https://github.com/fwbrasil/activate/commit/cb2c9d5d4d5efad4a6346d85017b2ce7b7b906b6
[Bug]concurrent read/write
https://github.com/fwbrasil/activate/commit/2aa63ec3dc64db66decbcd274b8443422da1b4c5
[Bug]read/write lock
https://github.com/fwbrasil/activate/commit/70fbe4070a56ec336fad71a0579c0f9f78c92831
[Bug]concurrent delete
https://github.com/fwbrasil/activate/commit/afc003b2c7d669008dacd20686dae5dbb86875a8
[Bug]possible Null Pointer exception
https://github.com/fwbrasil/activate/commit/43ff0a11562ff1628cbbd618994ca22cdeeb0276
[Bug]case fallthrough
https://github.com/fwbrasil/activate/commit/3bac399611f04ee2792d03ec71b102f937452637
[Bug]get empty element from map
https://github.com/fwbrasil/activate/commit/11d7c89632855104cc91be0b05cc40b0deed38b9
[Bug]undefined field
https://github.com/fwbrasil/activate/commit/11d7c89632855104cc91be0b05cc40b0deed38b9
[Don't understand]type contravarience
https://github.com/sksamuel/elastic4s/commit/d3406a030a6daaee9cdf3b2fdd522effeff5ae89
[Warning]too long thread sleep
https://github.com/sksamuel/elastic4s/commit/0351b7317a86da688beb6d1818f2caf703777275
[Can't detect]match operator ===(see http://stackoverflow.com/questions/26193267/why-does-slick-require-using-three-equal-signs-for-comparison)
https://github.com/mauricio/postgresql-async/commit/682e2bff8864209aa0e51a497cd71c4a6c02d812
[Bug]some obvious function misuse
https://github.com/sksamuel/elastic4s/commit/3748069f982accf1ba94c4defd4aac16ba39fd1e
[Possible]logger cause mem leak
https://github.com/mauricio/postgresql-async/commit/80876ee3293748e4bb96939e938a95d31b7b8768
[Improvement]foreach rather than map
https://github.com/mauricio/postgresql-async/commit/f754c1b72524974a8d011b458daac9bd4140e590
[Bug]bad matching syntax, should be _
https://github.com/mauricio/postgresql-async/commit/6e81e4adcb016cbd7b1e3ed36d5535d9cb6fa762
[Possible]usage of any and anyRef
https://github.com/sksamuel/elastic4s/commit/97c8f27ed5addaa2ebe153ca7439c23f8a642f87
[Possible]missing function return type
https://github.com/aselab/scala-activerecord/commit/6a6e92b6a09078bbb263c580515d95fb82d6f40f
[Possible]match return type(whether to add bracket is confusing and misleading)
https://github.com/scalatra/scalatra/commit/96506a41dc9cc142305ab54e3cefde758fa880ab
[Not sure]reflection(don't quite understand)
https://github.com/sorm/sorm/commit/ca1236ce8c11fddc844bdf287ed59b20f4a79a53
[Bug]if everyone use, everyone should use
https://github.com/scalatra/scalatra/commit/5bc791191f78c6fecd3e6d5f68474c7c84593869
[Bug]error with return type
https://github.com/skinny-framework/skinny-framework/commit/ed865e0cc193df6cdb8b478b7cb5c5a4d901612e
[Possible]get should be consistent
https://github.com/skinny-framework/skinny-framework/commit/b77a6b69962f4d5f02e5e0da481bc100723ee2ee
[Possible]member type
https://github.com/skinny-framework/skinny-framework/commit/5c0a356885939ac03561dd5e64ac0e33109d3d34
[Improvement]duplicated function call
https://github.com/skinny-framework/skinny-framework/commit/5d06ad52d6d741fc5c1ba624190ad659e70a4752
[Can't detect]use function result before check
https://github.com/skinny-framework/skinny-framework/commit/f48bed91f8688bd0abe93aa6e7e4e4d0a54199a6
[Bug]not-safe use of toString
https://github.com/skinny-framework/skinny-framework/commit/35c06c50515988cf49a6092a83fc640fd852f2d9
[Bug]should check Null ahead
https://github.com/skinny-framework/skinny-framework/commit/56495db870122bda1c77f32e4f0b52b97677d80a
[Bug]function name conflict
https://github.com/skinny-framework/skinny-framework/commit/5c9362edb0905f20c06e94b9bde00ec94b21b042
[Bug]Another NPE(hard to detect)
https://github.com/skinny-framework/skinny-framework/commit/2e2a5b439a6a2a5fa1098ac33fe0fa701d782b77
[Bug]check for unclosed bracket
https://github.com/skinny-framework/skinny-framework/commit/2134a1c5ccae5a83d9d2efd8eb33b34849fdcfd2
[Possible]type problems
https://github.com/skinny-framework/skinny-framework/commit/887f63fefff8f19cf72fbea3126c6b36691245e1
[Can't detect]class should be immutable
https://github.com/skinny-framework/skinny-framework/commit/7061db58c3a713a830db0c15ab7d63ed3834815d
[Bug]check for type[Nothing] https://github.com/adamw/macwire/commit/366611f2364678efd625a446a93341deb62b825c
[Possible]No Return type? https://github.com/adamw/macwire/commit/c453e63f03d590ff622de8c6de0842b6e57345eb
[Bug]missing .value(all except one pattern) https://github.com/eed3si9n/scalaxb/commit/c90cb88c760d67b804df2a2418b4e5a60661656c
[Be careful]This is a false-positive for empty matching https://github.com/eed3si9n/scalaxb/commit/7ae77094f0671148d33055f52f7ad1d319636bbd
[Improvement]duplicate function call https://github.com/eed3si9n/scalaxb/commit/edff5d58c20177cf47f259771614bc3f63919165
[Improvement]emit a warning for use of null https://github.com/eed3si9n/scalaxb/commit/380a11989fa5fa8f2583b11ee34de9488cc58925 https://github.com/eed3si9n/scalaxb/commit/b6c5a29c8d38d90bfd3dbbac7042a4427d1e3a97
[Don't understand]use lazy val to get overriden https://github.com/eed3si9n/scalaxb/commit/abc50699d157c702a063ac6f031ae0b959cad0b7
[Can't detect]misuse of val and def https://github.com/eed3si9n/scalaxb/commit/13046ac38c9423c063d89bcf485f087e579b22ea
[Bug]missing prefex in string interpolation https://github.com/lift/framework/commit/dc632a927a22a9b81ff5422fdc1ba389ce47595f
[Bug]missing default match option https://github.com/lift/framework/commit/77ba2b73e800358405f9bbbe1e2ac3f26126d951
[Bug]enum with duplicated value https://github.com/lift/framework/commit/5f09c86fdc72ae163d2fc4d4415b764e3d92be1f
[Bug]broken string interpolation https://github.com/lift/framework/commit/51b4f9dbf672d12a3aa5227e4fbecdadf6493bf5
[Bug]missing default match https://github.com/lift/framework/commit/9b370d1bf627a38ebc0bdd7b8aa0152653f49807 https://github.com/lift/framework/commit/97c08c7dd9ed161a83f6c3b716e03bbec98f28fc
[Bug]dead match condition https://github.com/lift/framework/commit/deb27666c0f8936aa12763afd74aba1439305f40
[Possible]unused parameter https://github.com/lift/framework/commit/ed4331ab1a33795356520f33ee22f0b39fe48b30
[Bug]NPE https://github.com/lift/framework/commit/0836f2a926c33bf72d8babe36d958653b146bbc1 https://github.com/lift/framework/commit/ce4bf6f1a5d1c8c71001e24ca537c5800ac7c541 https://github.com/lift/framework/commit/a09b633327405cf3c4aad2c0c124ea5b897428b5
[Can't detect] Zero distance of a list https://github.com/lift/framework/commit/47cd758a4fc468327049923b90bab70fe8e11419
[Ignore]lines not confront https://github.com/lift/framework/commit/fa070cb0ffc7f3f6c64deb5039b87f3710cb5f3e
[Bug]deadlock https://github.com/lift/framework/commit/820a15d7a2c5e2bb4eb00352b325412393329998
[Bug]null check of string https://github.com/lift/framework/commit/e6d70f393e32493bfc413ddad79711340903992a
[Bug]reentrantreadwritelock deadlock https://github.com/lift/framework/commit/9dc635255f15bca027db5735e94ddfbbd800aa56
[Bug]type mismatch https://github.com/lift/framework/commit/1ffac230fea785e221e9ecb2a1b106c324700a2b
[Can't detect]off-by-1 error https://github.com/lift/framework/commit/b1ed911ea9aa965c6de292226dce7670a37a2576 https://github.com/lift/framework/commit/bad555b9b6adbb407a6026b324e28480ea175fd1
[Bug]argument type error(need further insight) https://github.com/lift/framework/commit/f01b9d5fc50533f3c2ba932357fac8c39a1fd1ea
[Bug]wrong intended null evaluation https://github.com/lift/framework/commit/7cc7134c37a599dd7f80a646eb0ce49d1d318862
[Not sure]non-existance field serialization https://github.com/lift/framework/commit/ed0a9488c4163455980047c20e409ac810a32e2e
[Not sure]transient field serialization https://github.com/lift/framework/commit/38930ae0c8bf92a725a5558584ea698c904f0400
[Bug]incorrect usage of array buffer https://github.com/lift/framework/commit/0b80e60948498400639949422d6040744cc45c76
[Bug]incorrect type check https://github.com/lift/framework/commit/ea5f68c2208ea3d7907e7a089b0883d89e54a876
[Bug]type mismatch in pattern matching https://github.com/lift/framework/commit/1c7c0c3c23e77c6c2adfb3eb36080cbed57530a8
[Can't detect]possible stack overflow https://github.com/lift/framework/commit/cbebcead73974d323ce3954de7934e4663d9ef46
[Don't understand]java double parsing problem https://github.com/lift/framework/commit/6ae4c680288f7daf6eccdf338cf48a7b733dab13
[Not sure]type matching(several other similar mistakes) https://github.com/lift/framework/commit/d48479e317ddfc1b183661396de74c5ae21fadd2
[Bug]invalid import(typo) https://github.com/lift/framework/commit/5eadebe1cb46f0784133f2d03c126e484a1ad7f2
[Don't understand]infinite loop https://github.com/lift/framework/commit/ca7d6e79f4130bedc37917b51b455e9de45e69a7
[Bug]NPE https://github.com/lift/framework/commit/5312678ef896a5a5de1063b4b54b391df77d1738 https://github.com/lift/framework/commit/edebbd744804ce7f4e3e15d2512e53d304ee5b78 https://github.com/lift/framework/commit/1e24fe928cdfd482445b8fa5223cad3dc956acf2
[Bug]null serialization https://github.com/lift/framework/commit/97b92da891458b447946bdc2b8678a26f831fc19
[Bug]nonsense behavior of match https://github.com/lift/framework/commit/aab84d819cc6f2abe040f6a84dd6949bb156256a
[Can't detect]not tail recursive function leads to stackoverflow https://github.com/lift/framework/commit/4ad245afe62221b39c4f5edc9ffb1b5c744c9510
[Possible]perhaps bad matching? https://github.com/lift/framework/commit/7263c58852706fd88bd3fbe02f007a4acbd25dbd
[Bug] int divided by int https://github.com/twitter/algebird/commit/0642b720f71f15fe9180598b920b32d4ccc55e9d
[Compile error]type error https://github.com/twitter/algebird/commit/c1e367b5239271c76b5aa7783386da290c0beae2
[Bug]same var used twice between statement https://github.com/twitter/algebird/commit/3dab7aa8ac8e093dfb367476c5672e844ff6a818
[Bug]reuse an iterator https://github.com/twitter/algebird/commit/f8cbd5d52eabfcbbc99fa3ccb2af9cb1a5485959
[Not sure]map toSeq error https://github.com/twitter/algebird/commit/6f4559e5391be084baecca0bb4fcb6fe131eb604
[Warning]Don't need default case https://github.com/nicta/scoobi/commit/596178e2108e697820f2775b4e80b20032f589eb
[Bug]equal no hashcode https://github.com/nicta/scoobi/commit/33f4f6f72f2aea987d3d1c4e126b48fa75bd4a5b
[Improvement]Don't override default type https://github.com/NICTA/scoobi/commit/6c5454be847f3895d9a5289c3a877bd395d1d948
[Bug]Null check https://github.com/nicta/scoobi/commit/383b92bdd971610625407101f32934107c136e35
[Bug]NPE https://github.com/playframework/playframework/commit/f5971e788a4af7037e1df86b3151a7229df60018
[Bug]unused local var https://github.com/jroper/playframework/commit/7d22bf13830c7b072d22aaaee10fe7c5c4c8cc0c
[Bug]unsafe .setObject(_, null) https://github.com/playframework/playframework/commit/08c3ee4d0430653caa4c167e9d5a0d3dc6cb529c
[Bug]missing parenthesis https://github.com/playframework/playframework/commit/6ec8f31fc9c632ab3d1eab29f441e5e8e3db4271
[Bug]obvious mistake https://github.com/storm-enroute/reactive-collections/commit/4032970311a636d78b4daa742e7d3f98fa7acaf4
[Bug]unused parameter https://github.com/playframework/playframework/commit/8589377861f242be38bb5a85c2c472cade95f332
[Bug]improper use of foreach https://github.com/storm-enroute/reactive-collections/commit/75797ed43c501bd0308a5c6ee7fa423f6c1f58ba
[Bug] self calling https://github.com/storm-enroute/reactive-collections/commit/0761e212e486e624dd2f3a69bdcbcb541deb64a9
[Bug]increment inside condition https://github.com/storm-enroute/reactive-collections/commit/a06257201def332e59f5966f37d21f47ef290f00
[Bug] false condition https://github.com/storm-enroute/reactive-collections/commit/5d6581c23641141cfacb9491c5e8f1426383c39f
[Bug] null checking https://github.com/aselab/scala-activerecord/commit/10d9069bf62f8217e04bdba3d20ed3f590fdce22
[Bug] null serializing https://github.com/aselab/scala-activerecord/commit/e43f4ac6a1303cbf4905a914982da1b8f9e9ab56
[Bug] getlines should check https://github.com/factorie/factorie/commit/60161078a70e41af7bac4a27e71cc54aedfc528a
[Bug] perhaps new shouldn't have prefix "def" https://github.com/factorie/factorie/commit/5a9e9c611c61fce848fa551e9899568b13a1c95d
[Bug]obvious https://github.com/factorie/factorie/commit/10041d13117a88c364ae48caddb563477af850b1
[Bug] "return" in case and bad return type https://github.com/factorie/factorie/commit/1914891580b1e4cf7467b25fce2467f646d2193a
[Bug] false type(missing bracket) https://github.com/factorie/factorie/commit/a1334905a4d5580ea82fbe8bca58ba5d5c2654a6
[Can't detect]Inconsistent init value https://github.com/factorie/factorie/commit/2c654f158ad9aa90fd1eaa572c33ec338560bb41
[Possible]Generate type https://github.com/dispatch/reboot/commit/5188e840f23ab7b828d5f16358144e1e4aae9bcc
[Possible]Infinite recursion https://github.com/dispatch/reboot/commit/c8cf0cd1f16e14e8dd343c1b50a88787218ae2ac
[Can't check]use of not thread-safe type in val https://github.com/maxcellent/lamma/commit/61c787957da76cf4dbfb5ce3f133b351dc8799cd
[Bug]Return type error https://github.com/xitrum-framework/sclasner/commit/3ec95406d77b56f31a111192aeed76cd74059823
[Bug]False parameter type https://github.com/xitrum-framework/glokka/commit/ef079563a97a24966c44e5e58dc8c82664921ff1
[Bug]Possible string out of bound error https://github.com/jrudolph/sbt-dependency-graph/blob/0bcd2e03f49f6c7133e9ef9e40b95d40970e4a29/src/main/scala/net/virtualvoid/sbt/graph/Graph.scala
[Possible]Missing return value https://github.com/adamretter/shadoop/commit/eae3f1f1125dfd3c459eb78f59776d7442ffd253
[Possible] wrong use of lazy val https://github.com/jaliss/securesocial/commit/99ee8c4e2ba0299da02ab4fb1d7d2cc094f8a588
[Style] avoid val in trait https://github.com/nicta/scoobi/commit/72a82e0f47923a8cd5bfb9f4b8b2dbca8e41ced2
[Performance] eliminate function call https://github.com/BIDData/BIDMach/commit/bc333be32ba9794b99d4f135aaf57fceb2589b3d
[Bug]Lots of null-pointer problems in BIDData/BIDMach
[Bug]unused function parameter https://github.com/etorreborre/specs2/commit/a455c55b6d0c014e36f18ec39260ec79a65afa4d
[Bug] should check exist first https://github.com/unfiltered/unfiltered/commit/2d3706f7e03ac923be7fc55d87ad0b2f06cfdf77
[Bug]ambiguous name https://github.com/milessabin/shapeless/commit/ddd46e7a6ce856904b5c52b55278f487f47eb634
[Improvement]unused alias in pattern matching https://github.com/unfiltered/unfiltered/commit/86be52c24945345e08b044b9b82eabe5e2c089aa
[Bug] unused pattern matching parameter https://github.com/ISCPIF/openmole/commit/a7e720a28c364490fc36f9ddbdfd621443de5657
[Bug]False type compare syntax http://docs.scala-lang.org/overviews/reflection/symbols-trees-types.html, ( == incorrectly reports that )
[Can't detect] switch from 1->to to 0->until
[Possible]should not override .size with val https://github.com/scalanlp/breeze/commit/384c6d6195f71f07ff178e8689f5efaf4875ab30 https://github.com/scalanlp/breeze/commit/335642cbc7f5ca95fe95b4f5fa212f7f8849e4a7
=======2015-8-24===================
[Bug] Misuse of type conversion(possible Array to NonArray) https://github.com/ISCPIF/openmole/commit/7642cb836a6b6e486dc3ce54c4816f23dc7df02c
=======2015-8-25=================== [Bug]Type Mismatch https://github.com/ISCPIF/openmole/commit/9267dfde86de01472db312ad493813b7069dc361
[Bug]String out of bound(should check at in slice()) https://github.com/jrudolph/sbt-dependency-graph/commit/0bcd2e03f49f6c7133e9ef9e40b95d40970e4a29
[Possible]Possible invalid type comparison https://github.com/novus/salat//commit/d9426b6801cafbe3a57641e23330da746475ed6f
[Bug] Pair should be a -> b instead of a, b(no parenthesis)(Also a checkType error) https://github.com/novus/salat//commit/c3766386cd2b9a1ba28a837c61db74cd59080515
[Bug] Unused Wrong return type(Can't detect, high false-positive) https://github.com/mohiva/play-silhouette/commit/44304299518d74b82b25a1b10e87e1fcd7e5e5c6
[Possible] Another pair -> tuple warning, pair should be like ((a,b)) https://github.com/mohiva/play-silhouette/commit/9f496e41b1327704880a84dcf9cd20cc8d18e2b4
[Possible]What's the return value or nothing returned? https://github.com/scalastyle/scalastyle/commit/a55810873d7d2f5dce4ada270bfb00983055a301
[Can't Detect]Copy-Paste bug (type WriteSteps) https://github.com/twitter/summingbird/commit/f55966ae631d77a5dfbfca3ce64129e4d2b6e679
[Bug] Constructor type error https://github.com/twitter/summingbird/commit/81ea9498783ab9c49a3c0407aaa0ba08f34472fb
[Possible] Override error https://github.com/twitter/summingbird/commit/045b0fbc9aabcd8a93dedbfd644fa67063026e93
[Bug] Infinite Recursion https://github.com/twitter/summingbird/commit/3bdc62ed21e24344ea732563e49b0032fd27b2ad
[Bug] Not coherent pattern matching return value https://github.com/twitter/summingbird/commit/8664a401460eae81d746f85e8b6c8e99e1202018
[Bug] Should not serialize lazy values, instead transient them. https://github.com/twitter/summingbird/commit/08b7565619690aca7d6d66a4ea54f7a4e6244d8e
=======2015-8-26===================


|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object ca.ualberta.cs.team5geotopics.UserLocationServices
public class UserLocationServices
| Constructor Summary | |
|---|---|
UserLocationServices()
|
| Method Summary | |
|---|---|
Context |
getContext()
|
Location |
getCurrentLocation()
Used to get the usersCurrentLocation, available at any time. |
boolean |
isNetworkAvailable()
|
boolean |
isProviderAvailable()
Checks if there are any location service providers enabled, ex. |
void |
setInitialLocation()
Sets the initial location which will be used in the case where there is no location providers available. |
void |
setMyLastKnownLocation(Location location)
Sets the users last known position to a specific location |
void |
setUpLocationServices()
Used to initialize the LocationManager that will help provide the application with the users current location. |
| Methods inherited from class java.lang.Object |
|---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public UserLocationServices()
| Method Detail |
|---|
public Context getContext()
public boolean isNetworkAvailable()
public void setUpLocationServices()
void
- public Location getCurrentLocation()
public boolean isProviderAvailable()
public void setInitialLocation()
public void setMyLastKnownLocation(Location location)
location
- The location to set the users last known locaiton to.
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


Already have a designed project and need to hand it off to get bids, printing and finishing? I can manage your project. Or want to know more? See my prepress class materials
Need help from the concept phase? I can help design and implement your project from start to print and beyond.
Want a site designed for web and mobile?


CURLINFO_TLS_SSL_PTR explained
NAME
CURLINFO_TLS_SESSION, CURLINFO_TLS_SSL_PTR - get TLS session info
SYNOPSIS
#include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TLS_SSL_PTR, struct curl_tlssessioninfo **session); /* if you need compatibility with libcurl < 7.48.0 use CURLINFO_TLS_SESSION instead: */ CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TLS_SESSION, struct curl_tlssessioninfo **session);
DESCRIPTION
Pass a pointer to a 'struct curl_tlssessioninfo *'. The pointer will be initialized to refer to a 'struct curl_tlssessioninfo *' that will contain an enum indicating the SSL library used for the handshake and a pointer to the respective internal TLS session structure of this underlying SSL library.
This option may be useful for example to extract certificate information in a format convenient for further processing, such as manual validation. Refer to the LIMITATIONS section.
struct curl_tlssessioninfo { curl_sslbackend backend; void *internals; };
The backend struct member is one of the defines in the CURLSSLBACKEND_* series: CURLSSLBACKEND_NONE (when built without TLS support), CURLSSLBACKEND_AXTLS, CURLSSLBACKEND_CYASSL, CURLSSLBACKEND_DARWINSSL, CURLSSLBACKEND_GNUTLS, CURLSSLBACKEND_GSKIT, CURLSSLBACKEND_MBEDTLS, CURLSSLBACKEND_NSS, CURLSSLBACKEND_OPENSSL, CURLSSLBACKEND_POLARSSL or CURLSSLBACKEND_SCHANNEL. (Note that the OpenSSL forks are all reported as just OpenSSL here.)
The internals struct member will point to a TLS library specific pointer for the active ("in use") SSL connection, with the following underlying types:
gnutls_session_t
gsk_handle
PRFileDesc *
CURLINFO_TLS_SESSION: SSL_CTX *
CURLINFO_TLS_SSL_PTR: SSL *
Since 7.48.0 the internals member can point to these other SSL backends as well:
SSL *
mbedtls_ssl_context *
ssl_context *
CtxtHandle *
SSLContext *
SSL *
If the internals pointer is NULL then either the SSL backend is not supported, an SSL session has not yet been established or the connection is no longer associated with the easy handle (eg curl_easy_perform has returned).
LIMITATIONS
This option has some limitations that could make it unsafe when it comes to the manual verification of certificates.
This option only retrieves the first in-use SSL session pointer for your easy handle, however your easy handle may have more than one in-use SSL session if using FTP over SSL. That is because the FTP protocol has a control channel and a data channel and one or both may be over SSL. Currently there is no way to retrieve a second in-use SSL session associated with an easy handle.
This option has not been thoroughly tested with plaintext protocols that can be upgraded/downgraded to/from SSL: FTP, SMTP, POP3, IMAP when used with CURLOPT_USE_SSL. Though you will be able to retrieve the SSL pointer, it's possible that before you can do that data (including auth) may have already been sent over a connection after it was upgraded.
Renegotiation. If unsafe renegotiation or renegotiation in a way that the certificate is allowed to change is allowed by your SSL library this may occur and the certificate may change, and data may continue to be sent or received after renegotiation but before you are able to get the (possibly) changed SSL pointer, with the (possibly) changed certificate information.
If you are using OpenSSL or wolfSSL then CURLOPT_SSL_CTX_FUNCTION can be used to set a certificate verification callback in the CTX. That is safer than using this option to poll for certificate changes and doesn't suffer from any of the problems above. There is currently no way in libcurl to set a verification callback for the other SSL backends.
How are you using this option? Are you affected by any of these limitations? Please let us know by making a comment at https://github.com/curl/curl/issues/685
PROTOCOLS
EXAMPLE
#include <curl/curl.h> #include <openssl/ssl.h> CURL *curl; static size_t wf(void *ptr, size_t size, size_t nmemb, void *stream) { const struct curl_tlssessioninfo *info = NULL; CURLcode res = curl_easy_getinfo(curl, CURLINFO_TLS_SSL_PTR, &info); if(info && !res) { if(CURLSSLBACKEND_OPENSSL == info->backend) { printf("OpenSSL ver. %s\n", SSL_get_version((SSL*)info->internals)); } } return size * nmemb; } int main(int argc, char** argv) { CURLcode res; curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, wf); res = curl_easy_perform(curl); curl_easy_cleanup(curl); } return res; }
AVAILABILITY
Added in 7.48.0.
This option supersedes CURLINFO_TLS_SESSION which was added in 7.34.0. This option is exactly the same as that option except in the case of OpenSSL.
RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
SEE ALSO
curl_easy_getinfo, curl_easy_setopt, CURLINFO_TLS_SESSION
This HTML page was made with roffit.


Nestled along the beach, JW Marriott Mumbai Juhu is a 5-star
haven where luxury reigns supreme. Upscale comfort awaits in
stylishly appointed hotel rooms and suites, showcasing
featherbed mattresses, chic décor, high-speed internet,
marble bathrooms and 24-hour room service. Thrill your
palate with diverse fine dining at our distinctive
restaurants and bars. Energize in our well-equipped fitness
center and refresh in the sparkling waters of our outdoor
infinity and salt-water pools. Celebrate and succeed in
flexible event spaces, masterfully designed for flawless
meetings, conferences and social affairs in Mumbai. After a
day of business, shopping or lounging on Juhu Beach, soothe
your senses with a luxury massage, beauty or wellness
therapy at our 5-star Quan Spa. Frequented by celebrities
and Bollywood luminaries, our hotel is one of Mumbai's most
elegant destinations, perfectly placed along the glittering
Arabian Sea.
Address: Juhu Tara Road, Mumbai, Maharashtra
400049.
Phone: 022 6693 3000
Sahara Star, the flagship hotel of Sahara India Pariwar, is
one of India’s most desirable destinations.Located in
Mumbai, Hotel Sahara Star, a 354 room property, offers
spacious accommodation with a private balcony and views of
the tropical lagoon. Its 5-star facilities include 5 food
and beverage destinations and an inimitable journey.
Complimentary WiFi throughout the property and airport
transfers are provided to and fro Mumbai Airport Terminal 1.
Featuring modern décor and floor-to-ceiling windows, rooms
at Sahara Star are fitted with a seating area and
flat-screen TV. A bathtub and hot shower are in the private
bathroom.
Address: Opp.Chhatrapati Shivaji Airport Terminal
1(Domestic), Vile Parle East, Vile Parle, Mumbai,
Maharashtra 400099.
Phone: 022 3989 5000
The Taj Mahal Palace is a heritage, five-star, luxury hotel
in the Colaba area of Mumbai, Maharashtra, India, situated
next to the Gateway of India. Built in the Saracenic Revival
style, it opened in 1903 as the Taj Mahal Hotel and has
historically often been known simply as "The Taj". The hotel
is named after the Taj Mahal, which is located in the city
of Agra approximately 1,050 kilometres (650 mi) from Mumbai.
It has been considered one of the finest hotels in the East
since the time of the British Raj. The hotel was one of the
main sites targeted in the 2008 Mumbai attacks.
Part of the Taj Hotels Resorts and Palaces, the hotel has
560 rooms and 44 suites and is considered the flagship
property of the group; it employs 1,600 staff. The hotel is
made up of two different structures: the Taj Mahal Palace
and the Tower, which are historically and architecturally
distinct from each other (the Taj Mahal Palace was built in
1903; the Tower was opened in 1972).
The hotel has a long and distinguished history, having
received many notable guests, from presidents to captains of
industry and show business stars.
Address:Apollo Bunder, Mumbai, Maharashtra 400001.
Phone: 022 6665 3366
With a view overlooking the Arabian Sea and the Bandra Worli
Sea Link, and located just 200 m from the seafront, Taj
Lands End features award-winning traditional Indian spa
treatments, an outdoor pool and 5 dining options. Taj Lands
End is 6 km from Shivaji Park and 8.3 km from Bandra Kurla
Complex. It is 7.3 km from Juhu Beach. Mumbai International
Airport is 10.2 km away. It offers easy access to the city's
business and entertainment spots.
For leisure, Taj Lands End has a fully equipped health club
and a state-of-the-art salon. Alternatively, guests can also
enjoy a beautiful blend of rejuvenating massages and
signature treatments rooted in Indian Aromatherapies at the
renowned Jiva Spa. A visit to the sauna rooms and yoga
sessions compliment the experience..
Address: Bandstand Fort, Byramji Jeejeebhoy Road,
Bandra West, Mumbai, Maharashtra 400050.
Phone: 022 6668 1234
Located beside the Santa Cruz Domestic Airport, The Orchid
Hotel offers rooms with cable TV. It features a rooftop
pool, a 24-hour coffee shop and free airport transfers from
the domestic airport (terminal 1B) only. Mumbai
International Airport is 9 km away.
Rooms at the Orchid come with a minibar and tea/coffee maker. A work desk with internet connection is
available in each room. Free water bottles are provided at the property
Address: 70-C, Nehru Road, Near Mumbai Domestic
Airport, Vile Parle (E), Mumbai, Maharashtra 400099.
Phone: 022 2616 4000
The Oberoi, Mumbai is a striking example of modern architecture that lifts you up over Marine Drive to
enjoy magnificent views of the ocean and 'Queen’s Necklace' lights along the shoreline. Only at the
best 5 star hotel in Mumbai.
Spacious accommodation, fine cuisines and our genuine hospitality are complemented by a range of
services for all guests; with special care taken for single lady travellers at the best hotel in
Mumbai. We aim to ensure that your stay with us will be as comfortable, convenient and pleasant as can
be.
Address: 216, Netaji Subhash Chandra Bose Rd,
Churchgate, Mumbai, Maharashtra 400021.
Phone: 022 6632 5757
The Oberoi, Mumbai is a striking example of modern architecture that lifts you up over Marine Drive to
enjoy magnificent views of the ocean and 'Queen’s Necklace' lights along the shoreline. Only at the
best 5 star hotel in Mumbai.
Spacious accommodation, fine cuisines and our genuine hospitality are complemented by a range of
services for all guests; with special care taken for single lady travellers at the best hotel in
Mumbai. We aim to ensure that your stay with us will be as comfortable, convenient and pleasant as can
be.
Address: C 56, G Block, Bandra Kurla Complex, Mumbai,
Maharashtra 400098.
Phone: 022 6672 7777
Perfectly situated in Andheri East, Courtyard Mumbai International Airport offers 4-star comfort and
an ideal location. Travelers love our hotel's seamless access to the city's premier local attractions
and business hub, including events at the Bandra Kurla Complex. Organize events, from lavish weddings
to training sessions, in the hotel's sophisticated indoor and picturesque outdoor venues. Reinvigorate
with a massage or wellness treatments at our spa, take a dip in the outdoor pool or work out in our
gym. Afterward, indulge in creative
Address: CTS 215, Opposite Sangam BIG Cinemas,
Andheri Kurla Road, Andheri East, Mumbai, Maharashtra
400059.
Phone: 022 6136 9999
Enjoy the peaceful ambience of our uncluttered, glass-walled lobby before checking into your modern
guest room. Stay at the contemporary Holiday Inn Mumbai International Airport for easy access to the
terminals and north Mumbai businesses. From this accommodation near Mumbai airport, you can see planes
jet off from the runway and the Hiranandani Garden district's skyscraper skyline from the hotel's
rooftop swimming pool. Our ballroom can hold up to 500 people for your reception or
conference
Address: Near Sakinaka Metro Station, Sakinaka
Junction, Andheri Kurla Road, Andheri East, Mumbai,
Maharashtra 400072.
Phone: 022 4085 1800
Grand Hyatt Mumbai is a contemporary lifestyle destination
spread across 12 acres of greenery in the Santacruz/ Kalina
area of Mumbai, offering the convenience you require from
luxury airport hotels. Experience extraordinary moments of
more in Mumbai with multiple dining options, extensive
leisure facilities, meeting rooms for business travellers,
an international shopping plaza & a host of rejuvenating and
recreational facilities.
Address: Bandra Kurla Complex Vicinity, Off Western
Express Highway, Santacruz East, Mumbai, Maharashtra
400055.
Phone: 022 4942 5361


class |
And |
takes in two params and returns true if both are 1
|
class |
ArcTangent |
returns the arc tan of a given value
|
class |
Backward |
makes the turtle go backwards whatever the given param value is
|
class |
ClearScreen |
Clears the screen and resets all the turtles
|
class |
Cosine |
takes the cosine of a given param value
|
class |
Difference |
takes the difference of two param values
|
class |
Equal |
returns true if the two values are equal
|
class |
Forward |
moves a turtle forward a given amount
|
class |
GetPenColor |
returns the pen color
|
class |
GetShape |
returns the shape index
|
class |
GreaterThan |
returns 1 if the first param is greater than the second, 0 else
|
class |
Heading |
returns the heading of the turtle
|
class |
HideTurtle |
hides the turtle from the user
|
class |
Home |
brings the turtle back home to 0,0
|
class |
IsPenDown |
returns 1 if the pen is down
|
class |
IsShowing |
returns 1 if the turtle is showing, 0 else
|
class |
Left |
rotates the turtle to the left
|
class |
LessThan |
returns 1 if the first param is less than the second, 0 else
|
class |
Minus |
returns the negated value of a given parameter
|
class |
NaturalLog |
takes the natural log of a value
|
class |
Not |
returns the opposite of what is given 1, or 0
|
class |
NotEqual |
returns 1 if the two values are not equal 0 else
|
class |
Or |
returns 1 if either of the two params are 1, 0 else
|
class |
PenDown |
puts the pen down
|
class |
PenUp |
pulls the pen up
|
class |
Pi |
returns the Pi value
|
class |
Power |
returns the param at 0 to the power of param at 1
|
class |
Product |
returns the product of the two params
|
class |
Quotient |
divides param 0 by param 1
|
class |
Random |
returns a random digit from 1 to given param
|
class |
Remainder |
returns the remainder between two given parameters
|
class |
Right |
rotates the turtle to the right a given amount of degrees
|
class |
SetBackground |
sets the background to a new color
|
class |
SetHeading |
sets the heading to an absolute direction
|
class |
SetPalette |
sets the pallatte to a specific RGB value
|
class |
SetPenColor |
sets the pen color to a given index value
|
class |
SetPenSize |
sets the pen size to a given size
|
class |
SetPosition |
sets the position to a given coordinate of parameters
|
class |
SetShape |
Sets the shape to a given index
|
class |
SetTowards |
sets the command to go towards a given value
|
class |
ShowTurtle |
shows the turtle
|
class |
Sine |
calculates the sine of a given param
|
class |
Sum |
returns the sum of two parameters
|
class |
Tangent |
returns the tangent value of a given param
|
class |
Turtles |
returns the number of turtles in a window
|
class |
XCoordinate |
returns the x coordinate of a given turtle
|
class |
YCoordinate |
returns the y coordinate of a given turtle
|


Rhino
HTTP Mocking & Debugging Service.
Contributing
Want to contribute? Follow these
Recommendations
.


Valencia MotoGP: Quartararo heads Marquez in Saturday practice
by Lewis DuncanFabio Quartararo did not relent his stranglehold on MotoGP's Valencia Grand Prix practice timesheets on Saturday morning, topping the session by 0.224 seconds from Marc Marquez.
Friday pacesetter Quartararo had led third practice in the early running, and took back over late on with a 1m30.232s to head into this afternoon's qualifying as the rider to beat.
Marquez edged clear of the field with a 1m31.631s five minutes in, which he duly improved by six tenths before becoming the first rider to improve on combined times with a 1m30.898s - a laptime just 0.163s outside Quartararo's Friday best.
This moved the Honda rider half a second clear of the field in practice three but kept him third overall on combined times.
Marquez's lap would remain the benchmark in the session until the closing stages.
Quartararo's Petronas SRT Yamaha team-mate Franco Morbidelli challenged Marquez's time as the session entered its final eight minutes, but missed out by 0.086s.
Four minutes later, works Yamaha runner Maverick Vinales deposed Marquez with a 1m30.766s, before his team-mate Valentino Rossi took over at the top of the combined times with a 1m30.630s.
Pramac's Jack Miller, who had also led early on, returned to the top of the standings shortly after Rossi set his pacesetting lap with a 1m30.543s, though Quartararo was by then starting to light up the timing screens.
Quartararo produced a 1m30.232s, which would not be bettered as the chequered flag brought the session to an end, with Marquez leaping up to second with a final effort of 1m30.456s.
Miller held onto third ahead of Rossi and Morbidelli, while Vinales found himself shuffled back to sixth after the final salvo of laps.
Factory Ducati duo Danilo Petrucci and Andrea Dovizioso slotted in behind the Yamaha rider, with Joan Mir the only Suzuki directly into Q2 after team-mate Alex Rins missed out in 12th.
LCR Honda's Cal Crutchlow secured the last direct Q2 placement despite suffering a crash at the Turn 10 right-hander midway through the session.
Aleix Espargaro - who was 18th - crashed his Aprilia twice in practice three, while Pramac's Francesco Bagnaia was sent over the handlebars of his GP18 while exiting pitlane late on in a bizarre incident.
KTM rider Pol Espargaro was denied direct passage to Q2 by just 0.043s in the end, having sat second in the session at one point in the closing stages.
Tech3 KTM rookie Iker Lecuona had an impressive second morning as a MotoGP rider, as he managed to find a further eight tenths on his Friday best and ended up ahead of works KTM rider Mika Kallio, Bagnaia and his Tech3 team-mate Hafizh Syahrin in 20th.
Practice three times
| Pos | Rider | Team | Time | Gap | Laps |
|---|---|---|---|---|---|
| 1 | Fabio Quartararo | Petronas Yamaha | 1m30.232s | - | 20 |
| 2 | Marc Marquez | Honda | 1m30.456s | 0.224s | 22 |
| 3 | Jack Miller | Pramac Ducati | 1m30.543s | 0.311s | 19 |
| 4 | Valentino Rossi | Yamaha | 1m30.630s | 0.398s | 22 |
| 5 | Franco Morbidelli | Petronas Yamaha | 1m30.723s | 0.491s | 22 |
| 6 | Maverick Vinales | Yamaha | 1m30.735s | 0.503s | 20 |
| 7 | Danilo Petrucci | Ducati | 1m30.847s | 0.615s | 21 |
| 8 | Andrea Dovizioso | Ducati | 1m30.851s | 0.619s | 22 |
| 9 | Joan Mir | Suzuki | 1m30.958s | 0.726s | 23 |
| 10 | Cal Crutchlow | LCR Honda | 1m30.996s | 0.764s | 19 |
| 11 | Pol Espargaro | KTM | 1m31.039s | 0.807s | 20 |
| 12 | Alex Rins | Suzuki | 1m31.093s | 0.861s | 23 |
| 13 | Johann Zarco | LCR Honda | 1m31.205s | 0.973s | 22 |
| 14 | Jorge Lorenzo | Honda | 1m31.383s | 1.151s | 19 |
| 15 | Andrea Iannone | Aprilia | 1m31.667s | 1.435s | 22 |
| 16 | Michele Pirro | Ducati | 1m31.671s | 1.439s | 19 |
| 17 | Karel Abraham | Avintia Ducati | 1m31.786s | 1.554s | 19 |
| 18 | Aleix Espargaro | Aprilia | 1m31.868s | 1.636s | 13 |
| 19 | Tito Rabat | Avintia Ducati | 1m32.265s | 2.033s | 24 |
| 20 | Iker Lecuona | Tech3 KTM | 1m32.398s | 2.166s | 20 |
| 21 | Mika Kallio | KTM | 1m32.521s | 2.289s | 21 |
| 22 | Francesco Bagnaia | Pramac Ducati | 1m32.599s | 2.367s | 15 |
| 23 | Hafizh Syahrin | Tech3 KTM | 1m33.046s | 2.814s | 18 |


Hello, My name is Olivar I'm student and study coding and i live in USA . Thanks to visit My First website .
Work
Contact Me


Parking in Cambridge and Boston is generally not an enjoyable experience. Whenever possible, park your car at the hotel at which you are staying, and use public transportation to get to the MIT campus. If you must drive to the campus, there is both on- and off-street parking available, but most public parking is not very close to the center of the MIT campus (unless you arrive early in the morning or late in the evening).
There is metered parking on Massachusetts Avenue for short stays and evenings/weekends, as well as a number of lots at which you may park for a fee. These include Vassar St. Public Parking at the corner of Massachusetts Avenue and Vassar Street, University Park / Star Market Public Parking, and the Marriott Parking Garage on Ames St. and Broadway.
If you were invited to campus and a visitor parking hang tag was given to you, you may park in the lots specified on the hang tag. Please check the parking lot listing and plan your trip accordingly.