The Voyages of Doctor Dolittle
by Hugh Lofting
Part 2, Chapter 5: Mendoza
Additional Information
- Year Published: 1922
- Language: English
- Country of Origin: England
- Source: Lofting, H. (1922). The Voyages of Doctor Dolittle. London, England: Lippincott Publishing.
-
Readability:
- Flesch–Kincaid Level: 4.2
- Word Count: 1,299
- Genre: Fantasy
- Keywords: 20th century literature, british literature, children's literature
- ✎ Cite This
Downloads
Inside the court-room everything was very solemn and wonderful. It was a high, big room. Raised above the floor, against the wall was the judge's desk; and here the judge was already sitting—an old, handsome man in a marvelous big wig of gray hair and a gown of black. Below him was another wide, long desk at which lawyers in white wigs sat. The whole thing reminded me of a mixture between a church and a school.
"Those twelve men at the side," whispered the Doctor—"those in pews like a choir, they are what is called the jury. It is they who decide whether Luke is guilty—whether he did it or not."
"And look!" I said, "there's Luke himself in a sort of pulpit-thing with policemen each side of him. And there's another pulpit, the same kind, the other side of the room, see—only that one's empty."
"That one is called the witness-box," said the Doctor. "Now I'm going down to speak to one of those men in white wigs; and I want you to wait here and keep these two seats for us. Bob will stay with you. Keep an eye on him—better hold on to his collar. I shan't be more than a minute or so."
With that the Doctor disappeared into the crowd which filled the main part of the room.
Then I saw the judge take up a funny little wooden hammer and knock on his desk with it. This, it seemed, was to make people keep quiet, for immediately every one stopped buzzing and talking and began to listen very respectfully. Then another man in a black gown stood up and began reading from a paper in his hand.
He mumbled away exactly as though he were saying his prayers and didn't want any one to understand what language they were in. But I managed to catch a few words:
"Biz—biz—biz—biz—biz—otherwise known as Luke the Hermit, of—biz—biz—biz—biz—for killing his partner with—biz—biz—biz—otherwise known as Bluebeard Bill on the night of the—biz—biz—biz—in the biz—biz—biz—of Mexico. Therefore Her Majesty's—biz—biz—biz—"
At this moment I felt some one take hold of my arm from the back, and turning round I found the Doctor had returned with one of the men in white wigs.
"Stubbins, this is Mr. Percy Jenkyns," said the Doctor. "He is Luke's lawyer. It is his business to get Luke off—if he can."
 He shook hands with me and then immediately turned and went on talking with the Doctor.
"Oh, I think it is a perfectly precious idea," he was saying. "Of COURSE the dog must be admitted as a witness; he was the only one who saw the thing take place. I'm awfully glad you came. I wouldn't have missed this for anything. My hat! Won't it make the old court sit up? They're always frightfully dull, these Assizes. But this will stir things. A bulldog witness for the defense! I do hope there are plenty of reporters present—Yes, there's one making a sketch of the prisoner. I shall become known after this—And won't Conkey be pleased? My hat!"
 "Who is Conkey?" I asked the Doctor.
"Sh! He is speaking of the judge up there, the Honorable Eustace Beauchamp Conckley."
"Now," said Mr. Jenkyns, bringing out a notebook, "tell me a little more about yourself, Doctor. You took your degree as Doctor of Medicine at Durham, I think you said. And the name of your last book was?"
I could not hear any more for they talked in whispers; and I fell to looking round the court again.
Of course I could not understand everything that was going on, though it was all very interesting. People kept getting up in the place the Doctor called the witness-box, and the lawyers at the long table asked them questions about "the night of the 29th." Then the people would get down again and somebody else would get up and be questioned.
One of the lawyers (who, the Doctor told me afterwards, was called the Prosecutor) seemed to be doing his best to get the Hermit into trouble by asking questions which made it look as though he had always been a very bad man. He was a nasty lawyer, this Prosecutor, with a long nose.
Most of the time I could hardly keep my eyes off poor Luke, who sat there between his two policemen, staring at the floor as though he weren't interested. The only time I saw him take any notice at all was when a small dark man with wicked, little, watery eyes got up into the witness-box. I heard Bob snarl under my chair as this person came into the court-room and Luke's eyes just blazed with anger and contempt.
This man said his name was Mendoza and that he was the one who had guided the Mexican police to the mine after Bluebeard Bill had been killed. And at every word he said I could hear Bob down below me muttering between his teeth,
"It's a lie! It's a lie! I'll chew his face. It's a lie!"
And both the Doctor and I had hard work keeping the dog under the seat.
Then I noticed that our Mr. Jenkyns had disappeared from the Doctor's side. But presently I saw him stand up at the long table to speak to the judge.
"Your Honor," said he, "I wish to introduce a new witness for the defense, Doctor John Dolittle, the naturalist. Will you please step into the witness-stand, Doctor?"
There was a buzz of excitement as the Doctor made his way across the crowded room; and I noticed the nasty lawyer with the long nose lean down and whisper something to a friend, smiling in an ugly way which made me want to pinch him.
Then Mr. Jenkyns asked the Doctor a whole lot of questions about himself and made him answer in a loud voice so the whole court could hear. He finished up by saying,
"And you are prepared to swear, Doctor Dolittle, that you understand the language of dogs and can make them understand you. Is that so?"
"Yes," said the Doctor, "that is so."
"And what, might I ask," put in the judge in a very quiet, dignified voice, "has all this to do with the killing of er—er—Bluebeard Bill?"
"This, Your Honor," said Mr. Jenkyns, talking in a very grand manner as though he were on a stage in a theatre: "there is in this court-room at the present moment a bulldog, who was the only living thing that saw the man killed. With the Court's permission I propose to put that dog in the witness-stand and have him questioned before you by the eminent scientist, Doctor John Dolittle."


Fork me on GitHub
Thanos
.py
Reduce the file of your project down to 50%,
by randomly deleting half of the files. (wOw!)
Installation
$ pip3 install thanos-py
Basic Usage
$ thanos-py /Your/Own/Location/


National Institute of Technology Silchar , Assam is recognised as one of the top educational and research institute in India . NIT Silchar is continuously ranked within the top - too institutes in India by NlRF , MHRD, Govt - of India. In 2020, Times Higher Education Ranking recognised the NIT Silchar as one of the top 1000 institutes in the world. NIT Silchar is located in the southern part of Assam . The institute was established in the year 1967 and in 2002 it was upgraded to the status of ' National Institute of Technology ' and was declared as an ' Institute of National Importance' in 2007 .
NIT Silchar is a fully residential campus sprawling over an area of 625 acres of land surrounded by scenic tea gardens and lakes. NIT Silchar is one of the greenest and sustainable campus that produce around one - third of it's own energy from solar energy.
The institute offers UG, PG and PhD programmes in various disciplines of science and Technology . Institute promotes start - ups , innovation, with thrust national sustainable goals. Department of Physics oers MSc. Physics and PhD in research areas : Experimental condensed matter physics, Theoretical condensed matter physics, High energy physics, etc . The department has sophisticated and modern laboratory for theoretical and experimental research.


DIRTY DANCING A film review by Mark R. Leeper Copyright 1987 Mark R. Leeper
Capsule review: Good story about a teenaged girl's coming-of-age at a Jewish resort in the Catskills of New York (actually it was filmed in North Carolina). Some very good dancing. The plot was a little contrived.
At least one film critic and one three-dimensional person have told me that DIRTY DANCING is the SATURDAY NIGHT FEVER of the 1980s. I can see what they mean. The dancing hooks the kids and then they see a good story of human values anyway. It's a good way to solve the problem of "I don't want to see a film with character development. hey, let's get Mikey to watch it." The problem is that while the story is good, it is a little pat. Things work out a little too well. Life is not really like that. SATURDAY NIGHT FEVER is a genuine slice-of-life film. Things do not all work out right, but they do work out like they do in life. It is not true at the end of SATURDAY NIGHT FEVER that "all's right with the world," but some progress has been made and that is a victory. DIRTY DANCING is a good film too. It is good like ON GOLDEN POND. But it lacks the grit of SATURDAY NIGHT FEVER.
DIRTY DANCING is the story, set in 1963, of how Baby Houseman (played by Jennifer Grey) comes of age during a two-week stay at a resort in the Catskill Mountains. (Actually the resort film is becoming its own sub- genre. The best of the lot is probably THE GIG.) She gets involved with the resort dance instructor (played by Patrick Swayze), and Penny, a pregnant but unwed dancer (played by Cynthia Rhodes). Baby has a natural desire to get involved with people in trouble and try to set things right, but in doing so she risks hurting her own relationship with her father (played by Jerry Orbach).
The title refers to two or three steamy scenes of dancing, but really erotic "dirty" dancing is sort of a paste-on to the plot. Professional mambo dancing is much more important, but let's face it, who under 60 years of age would go to see a film called PROFESSIONAL MAMBO DANCING? When it got to video, it would end up with the instruction tapes.
Acting honors for the piece go to Grey, who really does seem to transform, but they also go to Jerry Orbach, who presents a real aura of integrity. He is sort of the father that everyone wishes they had. For being a little too neat and pat, this film gets a +1 on the -4 to +4 scale.
Mark R. Leeper ihnp4!mtgzz!leeper<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Course Learning Outcomes (CLO) are learner-focused statements of what students are
expected to evidence or demonstrate upon completion of a course. They specify what
students are expected to know and do as a result of learning in the course.
We have extracted relevant key phrases from the description of the course you are after.
Identify what students are expected to demonstrate on completion of their program or course,
choose verbs from Bloom's Taxonomy action verbs.
There are no hard rules to the number of learning outcomes,
though normally 4-10 is about right per program and course.


Recipe 5.14. Enriching the Dictionary Type with Ratings Functionality
Credit: Dmitry Vasiliev, Alex Martelli
Problem
You want to
use a dictionary to store the mapping between some keys and a current
score value for each key. You frequently need to access the keys and
scores in natural order (meaning, in order of ascending scores) and
to check on a
"key"'s current
ranking in that order, so that using just a dict
isn't quite enough.
Solution
We can subclass dict and add or override methods
as needed. By using multiple inheritance, placing base
UserDict.DictMixin before
base dict and carefully arranging our various
delegations and "over"rides, we can
achieve a good balance between getting good performance and avoiding
the need to write "boilerplate"
code.
By enriching
our class with many examples in its docstring, we can use the
standard library's module doctest
to give us unit-testing functionality, as well as ensuring the
accuracy of all the examples we write in the docstring:
#!/usr/bin/env python
''' An enriched dictionary that holds a mapping from keys to scores '''
from bisect import bisect_left, insort_left
import UserDict
class Ratings(UserDict.DictMixin, dict):
""" class Ratings is mostly like a dictionary, with extra features: the
value corresponding to each key is the 'score' for that key, and all
keys are ranked in terms their scores. Values must be comparable; keys,
as well as being hashable, must be comparable if any two keys may ever
have the same corresponding value (i.e., may be "tied" on score).
All mapping-like behavior is just as you would expect, such as:
>>> r = Ratings({"bob": 30, "john": 30})
>>> len(r)
2
>>> r.has_key("paul"), "paul" in r
(False, False)
>>> r["john"] = 20
>>> r.update({"paul": 20, "tom": 10})
>>> len(r)
4
>>> r.has_key("paul"), "paul" in r
(True, True)
>>> [r[key] for key in ["bob", "paul", "john", "tom"]]
[30, 20, 20, 10]
>>> r.get("nobody"), r.get("nobody", 0)
(None, 0)
In addition to the mapping interface, we offer rating-specific
methods. r.rating(key) returns the ranking of a "key" in the
ratings, with a ranking of 0 meaning the lowest score (when two
keys have equal scores, the keys themselves are compared, to
"break the tie", and the lesser key gets a lower ranking):
>>> [r.rating(key) for key in ["bob", "paul", "john", "tom"]]
[3, 2, 1, 0]
getValueByRating(ranking) and getKeyByRating(ranking) return the
score and key, respectively, for a given ranking index:
>>> [r.getValueByRating(rating) for rating in range(4)]
[10, 20, 20, 30]
>>> [r.getKeyByRating(rating) for rating in range(4)]
['tom', 'john', 'paul', 'bob']
An important feature is that the keys( ) method returns keys in
ascending order of ranking, and all other related methods return
lists or iterators fully consistent with this ordering:
>>> r.keys( )
['tom', 'john', 'paul', 'bob']
>>> [key for key in r]
['tom', 'john', 'paul', 'bob']
>>> [key for key in r.iterkeys( )]
['tom', 'john', 'paul', 'bob']
>>> r.values( )
[10, 20, 20, 30]
>>> [value for value in r.itervalues( )]
[10, 20, 20, 30]
>>> r.items( )
[('tom', 10), ('john', 20), ('paul', 20), ('bob', 30)]
>>> [item for item in r.iteritems( )]
[('tom', 10), ('john', 20), ('paul', 20), ('bob', 30)]
An instance can be modified (adding, changing and deleting
key-score correspondences), and every method of that instance
reflects the instance's current state at all times:
>>> r["tom"] = 100
>>> r.items( )
[('john', 20), ('paul', 20), ('bob', 30), ('tom', 100)]
>>> del r["paul"]
>>> r.items( )
[('john', 20), ('bob', 30), ('tom', 100)]
>>> r["paul"] = 25
>>> r.items( )
[('john', 20), ('paul', 25), ('bob', 30), ('tom', 100)]
>>> r.clear( )
>>> r.items( )
[ ]
"""
''' the implementation carefully mixes inheritance and delegation
to achieve reasonable performance while minimizing boilerplate,
and, of course, to ensure semantic correctness as above. All
mappings' methods not implemented below get inherited, mostly
from DictMixin, but, crucially!, _ _getitem_ _ from dict. '''
def _ _init_ _(self, *args, **kwds):
''' This class gets instantiated just like 'dict' '''
dict._ _init_ _(self, *args, **kwds)
# self._rating is the crucial auxiliary data structure: a list
# of all (value, key) pairs, kept in "natural"ly-sorted order
self._rating = [ (v, k) for k, v in dict.iteritems(self) ]
self._rating.sort( )
def copy(self):
''' Provide an identical but independent copy '''
return Ratings(self)
def _ _setitem_ _(self, k, v):
''' besides delegating to dict, we maintain self._rating '''
if k in self:
del self._rating[self.rating(k)]
dict._ _setitem_ _(self, k, v)
insort_left(self._rating, (v, k))
def _ _delitem_ _(self, k):
''' besides delegating to dict, we maintain self._rating '''
del self._rating[self.rating(k)]
dict._ _delitem_ _(self, k)
''' delegate some methods to dict explicitly to avoid getting
DictMixin's slower (though correct) implementations instead '''
_ _len_ _ = dict._ _len_ _
_ _contains_ _ = dict._ _contains_ _
has_key = _ _contains_ _
''' the key semantic connection between self._rating and the order
of self.keys( ) -- DictMixin gives us all other methods 'for
free', although we could implement them directly for slightly
better performance. '''
def _ _iter_ _(self):
for v, k in self._rating:
yield k
iterkeys = _ _iter_ _
def keys(self):
return list(self)
''' the three ratings-related methods '''
def rating(self, key):
item = self[key], key
i = bisect_left(self._rating, item)
if item == self._rating[i]:
return i
raise LookupError, "item not found in rating"
def getValueByRating(self, rating):
return self._rating[rating][0]
def getKeyByRating(self, rating):
return self._rating[rating][1]
def _test( ):
''' we use doctest to test this module, which must be named
rating.py, by validating all the examples in docstrings. '''
import doctest, rating
doctest.testmod(rating)
if _ _name_ _ == "_ _main_ _":
_test( )
Discussion
In many ways, a dictionary is the natural data structure for storing
a correspondence between keys (e.g., names of contestants in a
competition) and the current
"score" of each key (e.g., the
number of points a contestant has scored so far, or the highest bid
made by each contestant at an auction, etc.). If we use a dictionary
for such purposes, we will probably want to access it often in
natural orderthe order in which the
keys' scores are ascendingand
we'll also want fast access to the rankings
(ratings) implied by the current
"score"s (e.g., the contestant
currently in third place, the score of the contestant who is in
second place, etc.).
To achieve these
purposes, this recipe subclasses dict to add the
needed functionality that is completely missing from
dict (methods rating,
getValueByRating, getKeyByRating),
and, more subtly and crucially, to modify method
keys and all other related methods so that they
return lists or iterators with the required order (i.e., the order in
which scores are ascending; if we have to break ties when two keys
have the same score, we implicitly compare the keys themselves). Most
of the detailed documentation is in the docstring of the class
itselfa crucial issue because by keeping the documentation and
examples there, we can use module doctest from the
Python Standard Library to provide unit-testing functionality, as
well as ensuring that our examples are correct.
The most interesting aspect of the implementation is that it takes
good care to minimize boilerplate (meaning repetitious and boring
code, and therefore code where bugs are most likely to hide) without
seriously impairing performance. class Ratings
multiply inherits from dict
and DictMixin, with the
latter placed first in the list of bases, so
that all methods come from the mixin, if it provides them, unless
explicitly overridden in the class.
Raymond Hettinger's DictMixin
class was originally posted as a recipe to the online version of the
Python Cookbook and later
became part of Python 2.3's standard library.
 If you are coding a
mapping class and want to ensure that your class supports all of the
many methods that a full mapping provides to application code, you
should subclass DictMixin and supply at least the
fundamental methods (depending on your class'
semanticse.g., if your class has immutable instances, you need
not supply the mutator methods _ _setitem_ _ and
_ _delitem_ _). You may optionally implement other
methods for performance purposes, overriding the implementation that
DictMixin provides. The whole
DictMixin architecture can be seen as an excellent
example of the classic Template Method Design Pattern, applied
pervasively in a useful mix-in variant.
In this recipe's class, we inherit _
_getitem_ _ from our other base (namely, the built-in type
dict), and we also delegate explicitly to
dict everything we can for performance reasons. We
have to code the elementary mutator methods (_ _setitem_
_ and _ _delitem_ _) because, in
addition to delegating to our base class dict, we
need to maintain our auxiliary data structure
self._ratinga list of (score,
key) pairs that we keep in sorted order with the help of
standard library module bisect. We implement
keys ourselves (and while we're
at it, we implement _ _iter_ _ i.e.,
iterkeys as well, since clearly
keys is easiest to implement by using _
_iter_ _) to exploit self._rating and
return the keys in the order we need. Finally, we add the obvious
implementations for _ _init_ _ and
copy, in addition to the three, ratings-specific
methods that we supply.
The result is quite an interesting example of balancing concision,
clarity, and well-advised reuse of the enormous amount of
functionality that the standard Python library places at our
disposal. If you use this module in your applications, profiling may
reveal that a method that this recipe's class
inherits from DictMixin has somewhat
unsatisfactory performanceafter all, the implementations in
DictMixin are, of necessity, somewhat generic. If
this is the case, by all means add a direct implementation of
whatever further methods you need to achieve maximum performance! For
example, if your application performs a lot of looping on the result
of calling r.iteritems( ) for some instance
r of class Ratings, you
may get slightly better performance by adding to the body of the
class the direct implementation of the method:
def iteritems(self):
for v, k in self._rating:
yield k, v
See Also
Library Reference and Python in a
Nutshell documentation about class
DictMixin in module UserDict,
and about module bisect.
|


The authorization repository readme
file contains documentation on the key concepts around authorization in the Owin Framework. It is strongly
recommended that you read it before using this assembly.
This package checks that the identity making the request has the required permissions. You must add
middleware to the pipeline that implements IMiddleware<IIdentification>
for this to work.
Adding this middleware to the Owin pipeline
builder.Register(ninject.Get<OwinFramework.Authorization.AuthorizationMiddleware>())
.As("Authorization")
.ConfigureWith(config, "/owinFramework/middleware/authorization");
The assumes that you are using Ninject as your IoC container, and followed the
getting started walkthrough. If this is not the case
then you will need to adjust the code to work in your application.
Default Configuration
The configuration below is the configuration you will get by default if you do not provide
a configuration for this middleware.
{
"owinFramework": {
"middleware": {
"authorization": {
"documentationRootUrl": "/owin/authorization/config"
}
}
}
}
There are not many configuration options on this package beacuse all that it does
is enforce permissions provided by other middleware downstream using an implementation
of IIdentityData injected by IoC.
Related Projects


{% load staticfiles %}
Welcome to our Emotion-aware Movie Recommendation System.
If you are using our system for the first time, there are some rules you need to understand. Our system is based on the user's current facial emotion to recommend movies for users, so please make sure that the camera is turned on and can get all your facial information.
In our system, you must complete a questionnaire before recommending movies to users. This questionnaire determines the emotional orientation of recommending movies for you. When you complete this questionnaire, you will automatically jump to the recommendation page. There will be four movies recommended based on your current emotions. You can use the button to go to the details page for more information. You can also search for specific movies through search page.
You must fill in our questionnaire here so that we can better recommend movies for you.
We are here to recommend four movies that are most suitable for you based on your feelings.
Here you can search for more specific movie details.


Character name:
Character level:(max 20)
Character Alignment:
Lawful good
Neutral good
Chaotic good
Lawful neutral
Neutral
Chaotic neutral
Lawful evil
Neutral evil
Chaotic evil
Choose character race:
Dragonborn
Mountain Dwarf
Hill Dwarf
High Elf
Wood Elf
Drow
Forest Gnome
Rock Gnome
Lightfoot Halfling
Stout Halfling
Half-Elf
Half-Orc
Human
Tiefling
Choose character class:
Barbarian
Bard
Cleric
Druid
Fighter
Monk
Paladin
Ranger
Rogue
Sorcerer
Warlock
Wizard
Choose character background:
Acolyte
Charlatan
Criminal
Entertainer
Folk Hero
Guild Artisan
Hermit
Noble
Outlander
Sage
Sailor
Soldier
Urchin
Choose two additional proficiencies:(4 total)
Acrobatics (Dex)
Animal Handling (Wis)
Arcana (Int)
Athletics (Dex)
Deception (Cha)
History (Int)
Insight (Wis)
Intimidation (Cha)
Investigation (Int)
Medicine (Wis)
Nature (Int)
Perception (Wis)
Performance (Cha)
Persuasion (Cha)
Religion (Int)
Slight of Hand (Dex)
Stealth (Dex)
Survival (Wis)
STR
+1
DEX
+1
CON
+1
INT
+1
WIS
+1
CHA
+1
Roll Stats
or use these stats
Create
Save
Cancel
Name
Race
Class
Alignment


I am experienced in creating websites about famous people that helped with the creation of programing and the computer.
What I have accomplished so far is that I've created multiple pages about famous people that were some of the first people to be invovled in the first programing languauge.
BLANK
The achievement I want to complete are getting a good internship where I could be taught more about computer programing. Another achievement I also want to accomplish is I want to create a website to hep teen drug users because I feel like its becoming a real issue for themselves and their futures.
Collaboratively administrate empowered markets via plug-and-play networks. Dynamically procrastinate B2C users after installed base benefits. Dramatically visualize customer directed convergence without revolutionary ROI.
The class Im Web technology which teaches us about creating and editing websites.
Apart from being a web creator and editor, I enjoy most of my time being outdoors. In the summer I play soccer very often and when its very cold in during winter time I work out indoors with weights and also using body weight methods.
I also enjoy a variety of other activites for example I enjoy Chess, Checkers, Four in a Row, and many other strategy games.


GWU DATS 6401 Final Project (Fall semester 2020)
Amna Gul
Primary education is a fundamental human right and one of the most crucial factors for human development, but despite the efforts and progress from local governments as well as international bodies like UNICEF, about 258 million children, adolescents and youth of primary and secondary school-age are still out of school for the year ending in 2018. If the current trend continues millions of children around the world will never be able to set their foot in a classroom.
The term "out-of-school children" defines the population between the ages of 6-15 years who do not attend schools, who have studied in schools but dropped out before completing their compulsory or basic education, whose entry to schools is likely to be delayed because of financial or domestic reasons or those who are unlikely to ever attend.
By carrying out this project, the aim is to dive deep into data and reveal who the out-of-school children are, where they live, what are the primary challenges they face and what strategies must be adopted to overcome those challenges.
In this section, we explore and find patterns from the rich set of data downloaded from reliable public sources like World Bank and UNESCO Institute of Statistics.
We first analyse out-of-school children's trend over time, (both in terms of their absolute values and percentages) to get a bird's eye view about whether the situation is improving or deteriorating over time. From graph below, we observe that from 1970-2019 there is a decreasing trend, indicating that countries overall have managed to enroll millions of additional children in primary education system over the past 5 decades.
Next, we break down our data with respect to gender. As indicated in previous graph, values for girls and boys both are decreasing with time but out-of-school rates for girls are still higher than those of boys throughout the timeline, indicating that gender disparity exists. The gap between out-of-school rates of girls and boys has narrowed steadily since 2000, but even this trend has slowed in recent years. Another thing to note here is that rate of decline for boys is not as sharp as that of girls during the past 50 years.
Another insight that the chart above provides is that the majority out-of-school children population (more than half) is comprised of girls. Around the world, 132 million girls are out of school, including 34.3 million of primary school age, 30 million of lower-secondary school age, and 67.4 million of upper-secondary school age. In countries affected by conflict, girls are more than twice as likely to be out of school than girls living in non-affected countries.
Given below are the top causes leading girls to persistent exclusion from school. It turns out that the two most crucial factors to girl's education are poverty and early marriages. According to one UNICEF estimate, only 49 of 155 countries have dedicated policies to allow pregnant girls and young mothers to continue their education.
Now lets take a look at geographical data and see which of the developing countries have the highest rates of out-of-school children. By dividing the data according to urban and rural population, we can easily identify that as per year 2018, Africa contains the highest rates for out-of-school children in the whole world. From map chart comparison below between urban and rural regions, rural regions on average tend to have far worse rates than urban regions. In many developing countries, resources are skewed in the opposite way, with more resources for the most advantaged: urban, more affluent areas receiving more funding per student than poorer, rural areas.
If we further breakdown this geographical data into different regions, we see that Africa, Central/South Asia and Oceana and have some of the most alarming rates for out-of-school children. Four countries, Mauritania, South Sudan, Niger and Mali, account for three-fifth of the out-of-school population in Sub-saharan Africa. Sudan, Yemen and Iraq account for a significant proportion of out-of-school children in Northen Africa and Western Asia. In South Asia, Pakistan (Urban population) alone accounts for more than one-half of the out-of-school children in the region, while Afghanistan (Rural population) also has a large number and proportion of out-of-school children according to household survey data.
Africa and Asia are the two most economically challenged continents on the globe of the world, so in this section we will focus on those countries that have highest rates both in poverty and out-of-school children. Interestingly, the countries that stood out in the previous two graphs above, also happen to be the ones with highest poverty rates forcing children in to child labor. Time and time again, poverty and rural location have been linked to persistent obstacles to education, despite the fact that a multitude of countries have built more schools and abolished school fees.
The correlation between poverty and school non-participation is most evident in Asian countries like Afghanistan, Yemen and African countries like Sudan, Chad, Mauritania etc. An important insight is the way that poverty interacts with other factors of exclusion, like war, conflict or natural disaster, to intensify disadvantage which we are going to discuss in the next section.
According to UNICEF report, nearly a quarter of world's children live in conflict or disaster-stricken countries, without access to quality education. One of the most adverse effects of these conflicts is that education systems are destroyed. Even in places where educational institutions might be found, children getting exposed to violence are more at risk of under-achieving or dropping-out. These are a few numbers for some of the worst war-affected countries:
From analysis and visualizations carried above, it is clear that despite an overall decreasing rate for out-of-school children, there are widespread challenges that continue to leave large number of children excluded. The main barriers that continue to hinder children from going to school are:
After assessing the barriers that prevent children from basic education, following are the key measures that need to be taken on priority level so that no child is left behind:
Learning material and data set for this project was acquired from the following resources:


At least six injured in shooting at California high school, reports say
by Scripps NationalAt least six people were injured in a shooting that occurred in the area of a southern California high school, the Associated Press reports.
The shooting reportedly occurred at or near Saugus High School in Santa Clarita.
"Shooting at Saugus High School, Please avoid the area," the Los Angeles County Sheriff's Office tweeted.  Deputies on scene and still responding. Avoid the area Further information to follow (sic)."
The Santa Clarita Valley Sheriff's Office also confirmed that it was responding to reports of shots fired at the school.
Saugus High School is currently on lockdown. All other schools in the district have also been placed under lockdown as a precautionary measure.
The Bureau of Alcohol, Tobacco, Firearms and Explosives tweeted that it is also responding to the shooting.
Police are also advising that anyone who lives in the neighborhood should lock their doors and stay inside.
More on this as it develops.


CS1675: Homework 9
Due: 12/11/2018, 11:59pm
This assignment is worth 40 points.
Part I: Bayes net written exercises (20 points)
Enter your responses in a file report.pdf/docx .
- [10 pts] Bishop Exercise 8.11
- [10 pts] In this exercise, we'll do some cross-domain recommendation, where we assume that there is a correlation between a user's taste in music and film. We'll only consider one music genre, namely jazz (which we'll denote by J), and four films, "Waking Life" (denoted by W), "Borat" (denoted by B), "Cinema Paradiso" (denoted by C) and "Requiem for a Dream" (denoted by R). We'll assume that conditioned on whether the user likes jazz, the movie likes/dislikes are independent. The prior probability of liking jazz is 30%. We've defined the following (combined) conditional probability table, where "=1" means "likes". We are conditioning on the first column.
| J=1 | W=1 | B=1 | C=1 | R=1 |
| T | 80 | 20 | 70 | 50 |
| F | 30 | 50 | 30 | 40 |
- What is the probability the user likes jazz, given that she likes the first and fourth movies but dislikes the second and third?
- How about the probability that the user likes jazz, given that she likes all the movies?
Part II: HMM naive solution (10 points)
In the remainder of this assignment, you will implement a basic Hidden Markov model.
We'll use the HMM from our in-class part-of-speech tagging example, whose states are PropNoun, Noun, Verb, Det. The transition probabilities are the same as in the example shown in class. The observation probabilities are defined as follows, and are defined in the provided file hmm_starter.m.
| State/Observation | john | mary | cat | saw | ate | a | the |
| PropNoun | 0.40 | 0.40 | 0.10 | 0.01 | 0.05 | 0.03 | 0.01 |
| Noun | 0.25 | 0.05 | 0.30 | 0.25 | 0.05 | 0.05 | 0.05 |
| Verb | 0.04 | 0.05 | 0.04 | 0.45 | 0.40 | 0.01 | 0.01 |
| Det | 0.01 | 0.01 | 0.01 | 0.01 | 0.01 | 0.45 | 0.50 |
In a function naive_solution.m, write code to compute the probability of observing each of the following sentences, using the naive solution. You can map each word to a number that is its index into our vocabulary (the union of the column headers above, except the first one), then a sentence is just a vector of numbers; see Part III for an example. Use the provided permn.zip to compute combinations with replacement, to get your list of possible state sequences.
Inputs:
- the transition matrix A (from hmm_starter.m),
- the observation matrix B (from hmm_starter.m),
- N, the number of states,
- M, the number of words in the vocabulary, and
- a vector of integers sent representing the sentence whose observation probability we want to compute.
Outputs:
- prob, the probability of observing the input sentence.
Part III: Testing HMM on part-of-speech tagging (10 points)
Finally, in a script hmm_demo.m, pick five of the sentences below, and compute their probability of occurrence. In a file report.pdf/docx, discuss what you observe about which of them seem more likely than others, and whether what you observe makes sense.
- "john saw the cat." (or using our mapping to numbers, sent = [1 4 7 3];)
- "john ate."
- "john saw mary."
- "mary saw john."
- "cat saw the john."
- "john saw the saw."
- "john ate the cat."
Submission: Please include the following files:
- report.pdf/docx
- naive_solution.m
- hmm_demo.m


Arp allows you to view and modify the ARP cache. If two hosts on the same subnet cannot ping each other successfully, try running the arp -a command on each computer to see whether the computers have the correct media access control (MAC) addresses listed for each other. You can use Ipconfig to determine a host's correct MAC address.
You can also use Arp to view the contents of the ARP cache by typing arp -a at a command prompt. This displays a list of the ARP cache entries, including their MAC addresses. Following is an example list of ARP cache entries.
C:\>arp -a
Interface: <IP_ADDRESS> on Interface 0x2
Internet address Physical Address Type
<IP_ADDRESS> 00-e0-34-c0-a1-40 dynamic
<IP_ADDRESS> 00-00-f8-03-6d-65 dynamic
<IP_ADDRESS> 08-00-09-dc-82-4a dynamic
<IP_ADDRESS> 00-c0-4f-79-49-2b dynamic
<IP_ADDRESS> 00-00-f8-03-6c-30 dynamic
If another host with a duplicate IP address exists on the network, the ARP cache might have the MAC address for the other computer placed in it, and this can lead to intermittent problems with address resolution. When a computer on the local network sends an ARP Request to resolve the address, it forwards its data to the MAC address corresponding to the first ARP Reply it receives. Arp can help by listing, adding, and removing the relevant entries.
You can use arp -d < IP address > to delete incorrect entries. Use arp -s <MAC address> (where the MAC address is formatted as hexadecimal bytes separated by dashes) to add new static entries; these static entries do not expire from the ARP cache. However, static entries do not persist after a reboot. For persistent static ARP cache entries, you must create a batch file run from the Startup group.
Use arp -N < IP address > to list all the ARP entries for the network interface specified by < IP address>. Table 3.2 lists all Arp switches.
Table 3.2 Arp Switches
Switch Name Effect
-d < IP address > Delete Removes the listed entry from the ARP cache
-s < MAC address > Static Adds a static entry to the ARP cache
-N < Interface IP address > Interface Lists all ARP entries for the interface specified
-a Display Displays all the current ARP entries for all interfaces
-g Display Displays all the current ARP entries for all interfaces


--- layout: page title: "About" teaser: "" header: image_fullwidth: sky-header-02--20170803_124017.jpg breadcrumb: true permalink: "about/" ---
I am a Software Developer with a B.Sc. Degree in Computer Science. I leverage a variety of Software Development technologies, including multiple programming languages and frameworks.
I also enjoy creating art with a variety of approaches, including the use of GIMP, Krita, Inkscape, and other software.
To get in touch with me, please use the Contact page.
You can also visit me at:


Please wait...
Using mystical evocation you can call spirits and demons into the physical realm and bind them within your magic circle. More powerful entities will provide more forbidden knowledge, but will increase your chance of madness.
Books for saving knowledge are essential to all professional magicians.


{% load thumbnail i18n jsonify less get_settings compressed %}{% load url from future %}
{% block header %}GIFT Token Seed Crowdsale is started!
#} BUILD YOUR SOFTWARE PROJECT EARN MONEY FOR DEVELOPMENTDevelopers
Open software parts
Closed tasks
Bounty fund
Integrate software that you need or create a new one. Get multiple solutions for a price of one. Don’t waste your time searching, interviewing and negotiating with developers - create challenges instead. Let our community suggest you a project architecture and prepare specifications. Pay only for solutions, not for hours of work.
FIND DEVELOPERSGet more money for the same tasks thanks to collective financing. Get a passive income for your open source projects. Participate in weekly online hackathons. Make the world a better place by creating free to use open source solutions.
#}
{# Want to cut software development costs? Get rid of the middlemen, work directly with#}
{# open-source development teams.#}
{#
Get a software solution by financing its development together with other organizations.#}
{#
#} {# You spend too much time searching for potential unicorns? Find promising projects by#} {# problems they solve, assess their chances by looking at hard data, and secure a share of#} {# their future profits in just a few clicks.#} {#
#} {##} {# Wish your brand was associated with a project everyone likes? Check out sponsorship#} {# opportunities.#} {#
#} {#Companies are spending billions of dollars to make the same features.
#} {# #} {#With OpenGift organizations can collectively fund development of new features in open-source software.
#} {# #} {##} {# Backers support the development of new specific features they are interested in.#} {#
#} {##} {# Each team member receives a share of project earnings exchange their GIFT.#} {#
#} {##} {# Users can exchange their GIFTs for other currencies with a 0% comission on the Platform's#} {# exchange.#} {#
#} {##} {# #} {# Fund this platform#} {# #} {#
#} {#For media inquiries<EMAIL_ADDRESS>#} {# #} {##} {#The main ideologist of Opengift talks how the platform adopted HyperLedger.
#} {# #} {# Watch#} {# #} {##} {#OpenGift wins the ICO Meetup Contest.
#} {# #} {# Watch#} {# #} {##} {#OpenGift CRO visits Consensus in May 2018 in New York, USA.
#} {##} {#OpenGift presents at EmergeConf in Minsk, Belarus.
#} {##} {#OpenGift gives a demo to the top world VCs in Tallinn, Estonia.
#} {##} {#OpenGift sponsored Nascar Cup Series 2018 USA.
#} {#We believe that all software must be free to use.#} {# We also believe that any developers work should be rewarded.
#} {##} {# And we are absolutely sure, that the collective financing can make software development up to 10 times cheaper for companies and users.
#} {#


something like a tag line
Add a little Description about yourself here (I preffer 3 sentences atmost but its upto you)
Python
Javascript
Arduino
C++
Experience company/organization
Experience company/organization
Volunteering organization
Volunteering organization
Volunteering organization
Institute Name


Programming
- SPR2021 - Advanced Games Project - Crescendo
- SPR2021 - AJAX/JQuery Mini Project - To Do List
- SPR2021 - Full Stack Demo - DVD DB Search
- SPR2020 - Experimental Game Engine
- SPR2020 - Game Prototype - In Another Life
- SPR2020 - Game Prototype - Obstacle Course!
- SPR2020 - Game Prototype - Limitless
- FALL2019 - Python Chat Client
- FALL2018 - Game Build - Parkour's Edge
- FALL2018 - Game Build - Tank Fight
- FALL2018 - Game Build - Jungle Platformer


About YAGPDB
YAGPDB is a multi-purpose discord bot that I've worked on for quite some time now. What does it do? Well it does a bunch of stuff right now, the best way to figure out what it does is to try it out by adding it onto a testing server and see what it provides for yourself.
Who am I? I go by the name jonas747 online and (unsuprisingly) my real name is also Jonas, although not 747, I'm not a plane. YAGPDB is a project that I have been developing in my spare time for roughly a year now, it started out because Mee6 (which I was currently using for my server) was lacking a lot of stuff that I wanted, so I decided to make my own bot, and here I am.
Features
Every feature may not be listed here
Feeds
- Super Fast reddit feeds (within 10 seconds normally)
- Fast youtube feeds (within a couple minutes)
General Moderation
- Kick, ban, report and clean commands
- Timed bans
- Advanced options for clean command: max age and regex matching
- Mute command with auto unmute after a duration
- Send a kick/ban/mute log message in a channel
- Send a kick/ban message to the person being kicked/banned
- Snapshots of the chat created on command or added to log message
- Warning command to give users warnings and track them
Automoderator
YAGPDB has a very configurable automoderator, for each rule (spam, links, bad words etc) you can set automoderator to mute, kick or ban after a certain number of violations within a certain timeframe
Current automoderator rules are:
- Spam/Slowmode
- Mass mention
- Invites to other servers
- Links
- Banned words (with inbuilt swear list)
- Banned websites (Planned google safe-browsing integration sometime in the future)
Custom Commands
- Triggers: starts with, contains, regex
- Dynamic responses
- Useful for things like automatic responses to common questions and command aliases
Server stats (Example)
- Stats: members joined, left, messages last 24h, members online. (more stats and graphs coming later)
- Optionally make stats public
Super advanced self assignable roles
- Group up several roles
- Toggle groups
- Assign them via reactions
Other
- Automatic assignement of role after a being a member for a certain duration
- Role commands to let people assign roles to themselves without the 'manage roles' permission
- Super fast reddit feeds (normally within 10 seconds of the post being made!!)
- Join, leave, topic change message (can also send a join message to the person joining in a dm)
- Calculator command
- Simple reputation system
- Various other fun commands
- Very good reliability and stability
And finally, the feature im most proud of that made me spend days and nights sitting in a horrible chair in a basement staring at a old crt monitor with bugs crawling up the wall behind it is: catfacts.
Help/Feedback/Community/Other...
The documentation can be found here
The yagpdb discord server for support, suggestions, feedback and the general community can be found here
If you want to donate using patreon or crypto currencies, check out this page


Event Location:
OTE Academy
1 Spartis and Pelika
Athens, , Greece
Abstract:
A common use case in many databases is a very large table, which serves as some kind of activity log, with an ever-increasing date/time column. This table is usually partitioned, and it suffers from heavy load of reads and writes. Such a table presents a challenge in terms of maintenance and performance. Activities such as loading data into the table, querying the table, rebuilding indexes or updating statistics become quite challenging. The latest versions of SQL Server, including 2017, offer several new features that can make all these challenges go away. In this session we will analyze a use case involving such a large table. We will examine features such as Incremental Statistics, New Cardinality Estimation, Delayed Durability and Stretch Database, and we will apply them on our challenging table and see what happens...
Speaker(s): Guy Glantser,
Abstract:
SQL Server has a lot of difference execution plan operators. By far the most interesting, and the most versatile, has to be the Hash Match operator. Hash Match is the only operator that can have either one or two inputs. It is the only operator that can either block, stream, or block partially. And it is one of just a few operators that contribute to the total memory grant of an execution plan. If you ever looked at execution plans, you will have seen this operator. And you probably have a rough idea of what it does. But do you know EXACTLY what happens when this operator is used? In this two-hour 500-level session, we will dive deep into the bowels of the operator to learn how it performs. It is going to be wild ride, so keep your hands, arms, and legs inside the conference room at all times; and please remain seated until the presenter has come to a full stop.
Speaker(s): Hugo Kornelis,
Abstract:
SQL Server has a lot of difference execution plan operators. By far the most interesting, and the most versatile, has to be the Hash Match operator. Hash Match is the only operator that can have either one or two inputs. It is the only operator that can either block, stream, or block partially. And it is one of just a few operators that contribute to the total memory grant of an execution plan. If you ever looked at execution plans, you will have seen this operator. And you probably have a rough idea of what it does. But do you know EXACTLY what happens when this operator is used? In this two-hour 500-level session, we will dive deep into the bowels of the operator to learn how it performs. It is going to be wild ride, so keep your hands, arms, and legs inside the conference room at all times; and please remain seated until the presenter has come to a full stop.
Speaker(s): Hugo Kornelis,
Abstract:
Execution plans are produced by the query optimizer that generates possible alternative execution plans for the same query through the use of the transformation rules. You already learned how to read an execution plan and the most significant things to look for such as warnings, most costly operators and table methods access. Now, you want to acquire a deeper understanding of how the Query Optimizer builds the optimal plan. In this session we will learn more about the phases of the optimization process, using undocumented trace flags we will discover the secrets of the Query Optimizer. Finally, we will show how to understand better the workload in terms of the percentage of time-out, the percentage of queries that contain sub-query and so on. At the end, Query Optimizer will not have any secret for you.
Speaker(s): Sergio Govoni,
Abstract:
Polybase started as a technology which allows you to query data stored in Hadoop or Azure Blob Storage as if it were just another table within SQL Server. As you move your data estate from on-premises to a cloud architecture, Polybase will be at the center of your cloud strategy. Data Integration (DI) is replacing traditional ETL for cloud architecture, and central to this strategy is the separation of storage from compute. Come to this Intermediate talk to learn how you can get started using Polybase in SQL Server right away and learn about the 3 core EXTERNAL objects used in Polybase. We will compare the differences and similarities between Polybase and Linked Servers. In SQL 'Aris' (2019), Polybase will grow further and add additional connectivity and querying potential. We will take a first look at how Polybase is central to SQL 2019 Big Data Clusters. Azure Kubernetes Services makes SQL Server Big Data Clusters easy to create and deploy.
Speaker(s): Paul Wehland,
Abstract:
Artificial Intelligence is dominating the world and not most of them had any chance to experience these features, due to various complicated reasons. How about if this can be made very easy and to exploit these AI features to visualise in our day to day Power BI? This AI session will cover all AI capabilities within Power BI and also using Azure Cognitive Services to build a live BOT QnA, Vision (Face API), Language (Text Analytics).
Speaker(s): Dr. Subramani Paramasivam,
Abstract:
You already know how easy it is to hack SQL Server… But how do you protect your local and cloud servers against enemy agent attacks? This is a demo-driven session, suited for DBAs, developers and security consultants. Both exploits and security recommendations to avoid them will be covered. Disclaimer: No actual crimes will be committed. Please do not send agents to my house again.
Speaker(s): André Melancia,
Abstract:
It seems like Artificial Intelligence and Machine Learning are a must nowdays. For projects carrying a simple or well kown problem we can find a lot of ready-made solutions, but this extremne easy to use could be one of our best enemy when facing with specific custom problems. With this session we will cover how to apply best practices in configurin ML but much more, do we reaaly need it always? The second part will cover vulnerabilities of ML discovering how easy could be to fool a neural network by some techinques (Like pixel attack) and their implication in projects that requires no security issues.
Speaker(s): Sebastiano Galazzo,
Abstract:
A walk through on how a real-life Store has been designed, developed, deployed and monitored on Azure Cloud by exploiting Azure Services such as CosmosDB, Azure Functions, Azure Queues, Azure Application Insights, Azure Log, etc. Furthermore, how all these can be orchestrated and programmed on Microsoft .NET Core 3.X, how to build custom API's and put all of them in action.
Speaker(s): Stavros Menegos,
Abstract:
In this session, we will cover: The internals of SQL Server Always On, Identifying and detecting latency and failover issues with Always On, Artifacts and data pointers available to troubleshoot latency and failover issues, Tips and Tricks to troubleshoot Always On availability groups, New enhancements which make troubleshooting Latency and Failover issues easier
Speaker(s): Marcelo Fernandes,
This is a list of speakers from the XML Guidebook records. The details and URLs were valid at the time of the event.
LinkedIn: https://www.linkedin.com/in/pwehland
Paul Wehland has worked with SQL Server for a VERY long time and has supported customers on every version all the way back to v1 (16 bit). Paul is one of only 130 SQL Server Certified Masters (SQL-MCM) worldwide. He is a Director in the Data Analytics service line at Avanade (joint venture between Microsoft and Accenture) supporting customers running very large and complex Data Estates. Before Avanade, Paul worked at Microsoft in the SQL Server Product Group on many teams (QA-Performance, SQLCAT, SQL Clustering to name a few). Prior to the SQL Product Group, Paul started in SQL-Product Support (PSS), where he co-founded the SQL Server MVP program, which he never imagined it would grow so large! Paul is based in Germany, but originally from the United States.
LinkedIn: http://www.linkedin.com/in/sgovoni
Contact: https://mvp.microsoft.com/it-it/PublicProfile/4029181?fullName=Sergio%20Govoni
Since 1999 Sergio Govoni has been a software developer; in 2000 he got a degree in Computer Science at "Università degli Studi" in Ferrara (Italy). He has worked for over 18 years in Centro Software, a software house that produces the best ERP for manufacturing companies that are export oriented. Now, he manages the development product team and he is constantly involved on several team projects, where he focues his attention on the architecture and the mission-critical technical details. Since 2016 he is the vice president of the UGISS (www.ugiss.org). For the provided help to technical communities and for sharing his own experience, since 2010 he has received the Microsoft Data Platform MVP award.
LinkedIn: http://uk.linkedin.com/in/dageop
Contact: http://www.yoursqlman.com/index.php/blogs
Dr.SubraMANI Paramasivam is a Microsoft MVP, PhD, Microsoft Certified Trainer and Head of Data AI at DAGEOP Ltd having 21 years of DB, BI, Analytics and AI experience. Mani has also spoken in various events like MS IGNITE, PASS Summit, MS Inspire, SQLBITS, Power Platform Summit, Global AI Bootcamp, Data BI Summit, SQLRelay, Power BI World Tour, Data Platform Summit, INSIDESQL UK, Global AI Nights, SQLServerGeeks Summit, MCT Global Summits, Data Day Events and various user group events. Mani also believes in Empowering Every Person in the planet and spreads the awareness on Global challenges via www.EmpoweringEveryPerson.com. He is also a co-owner of 1 Global AI Meetup and 3 Power BI PUG PASS local / user groups.
LinkedIn: http://www.linkedin.com/in/glantser
Contact: https://www.madeiradata.com/blog
Guy Glantser, Data Platform MVP, is the leader of the Israeli PASS Local Group, as well as the CEO and founder of Madeira Data Solutions. His career has been focused on the Microsoft Data Platform for the past 20 years, performing various database roles as either an on-site DBA, an external consultant, or a speaker. His main area of expertise is SQL Server development and optimization. Guy is involved in many activities in the Microsoft Data Platform community. He occasionally speaks at community events, such as PASS Summit, SQLBits, SQLSaturdays, and user groups around the world. He also co-hosts the SQL Server Radio podcast.
LinkedIn: http://LinkedIn.COM/in/AndreMelancia
Contact: http://Andy.PT
Owner / Principal Consultant at LunarCat.PT Microsoft Certified Trainer (MCT) focusing on SQL Server, Azure, IoT and Security. 19+ years' fun developing information and multimedia systems, DBA, project and IT management. Data Community Portugal, IT Pro Portugal and PowerShell Portugal communities organiser. IPv6 Portugal, DNSSec Portugal and Windows Development Portugal online communities moderator. Actively volunteering, organising, speaking or just participating at community meetings and events around the world. Proud uncle and food devouring expert, with dangerous рuϧϧy cat as companion. Go to http://Andy.PT and you'll know the same as the NSA...
LinkedIn: https://www.linkedin.com/in/smeneg
- More than 30 years experience in S/W Engineering - Very good Expertise on LOB Apps - Have gone through working experience in large s/w systems in technologies and frameworks that have evolved through out all these years: Starting from Unix-C, to Visual Studio 1.0 and MFC, C++, SQL Server, .NET framework Full stack development, XCode Objective C, Xamarin Monotouch, Xamarin Forms, AngularJS, ASP.NET MVC, .NET Core, ML on Python, Anaconda, and ML.NET, Azure Services and Power Apps, Microsoft Power BI Connectors, Office 365 Application development and many more. - Co-founder and Technical Director (formerly RD Director) of Entersoft SA - Recently I have been nominated and awarded for the 3rd consecutive time as a Microsoft Regional Direc
LinkedIn: http://nl.linkedin.com/in/hugokornelis
Contact: http://sqlblog.com/blogs/hugo_kornelis/default.aspx
Hugo Kornelis is an established SQL Server community expert who spends a lot of time at various conferences. He is author of "the Execution Plan Reference" (sqlserverfast.com/epr), blogger, technical editor of Grant Fritchey's "SQL Server Execution Plans, 3rd edition" and some other books, and Pluralsight author. He was awarded SQL Server MVP and Data Platform MVP 12 times (2006 - 2016, and 2019-present). When not working for the community, he is busy at his day job: freelance database developer/consultant. Hugo has over 20 years of SQL Server experience in various roles. He loves to write and tune complex queries, but he also has a strong database design background. When not working for the community, he is busy at his day job: freelance database developer/consultant. Hugo has over 20 years of SQL Server experience in various roles. He loves to write and tune complex queries, but he also has a strong database design background.
LinkedIn: https://br.linkedin.com/in/marcelodba
Contact: http://marcelodba.wordpress.com
Marcelo Fernandes is SQL Server MVP and has 12+ years experience with databases, specialized in High Availability, critical missions and very large databases. He holds the MCP / MCDBA / MCSA / MCTS / MCITP and MCT certifications, he lives and works in Berlin for an American e-commerce company that sells home goods. He share their knowledge through webcasts, presentations and articles on Microsoft technologies and can be cantacted by email<EMAIL_ADDRESS>or twitter @ marcelodba
LinkedIn: https://it.linkedin.com/in/sebastianogalazzo
Passionate about Artificial Intelligence, Sebastiano @galazzoseba brings over 15 years of experience in AI and machine learning to his current position as CTO at Sistem-EVO srl. Sebastiano has dedicated the last few years to designing and developing algorithms to tackle the challenges of Natural Language Processing, image recognition and predictive analysis through machine learning. He is a Microsoft MVP and his work in AI has gained commendation in numerous publications and has received several national and international awards.
LinkedIn: http://nl.linkedin.com/in/hugokornelis
Contact: http://sqlblog.com/blogs/hugo_kornelis/default.aspx
Hugo Kornelis is an established SQL Server community expert who spends a lot of time at various conferences. He is author of "the Execution Plan Reference" (sqlserverfast.com/epr), blogger, technical editor of Grant Fritchey's "SQL Server Execution Plans, 3rd edition" and some other books, and Pluralsight author. He was awarded SQL Server MVP and Data Platform MVP 12 times (2006 - 2016, and 2019-present). When not working for the community, he is busy at his day job: freelance database developer/consultant. Hugo has over 20 years of SQL Server experience in various roles. He loves to write and tune complex queries, but he also has a strong database design background. When not working for the community, he is busy at his day job: freelance database developer/consultant. Hugo has over 20 years of SQL Server experience in various roles. He loves to write and tune complex queries, but he also has a strong database design background.
The following is a list of sponsors that helped fund the event.


Useful Tip:
These services may be unavailable in some countries without a VPN.
Fair Blind Certificate Authorities with Auditability using Blockchain.
Try interactive tutorial Github
| Resource | RUL |
|---|---|
| Demonstration | in progress... |
| Documentation | https://typex-1.github.io/auditable-credential-documentation/ |
| Tracing Service | in progress... |
| Academic Paper | in progress... |
| Oasis Documentation | https://docs.oasiscloud.io/en/latest/ |
These services may be unavailable in some countries without a VPN.
Install MetaMask for Chrome or Firefox
Write down your secret phrase, since you'll need it for the tutorials
Click on the the MetaMask (fox) icon in your browser to view the MetaMask overlay. In the overlay, click on the colorful circle in the top right and select Settings Scroll down to the New Network section and click Show Advanced Options Fill in the values below then click Save (Screenshot)
To request Oasis Devnet tokens (DEV), visit the Oasis faucet at https://faucet.oasiscloud.io
In our demo，you clicks the Set up button to initiate some parameters which are public and will be used in next procedure.
After that, you can create the key pairs for issuer and user respectively.
In this step, you need ensure that you have installed the MetaMask in your browser, see Configurations.
If you have configured the MetaMask correctly, then you will see the Notification as follows, by clicking button, you can compile and deploy the smart contract.


@main("Welcome to keep-clone") { Keep Clone Login Register Welcome to Keep Clone An effort to make a clone of Google Keep in play-scala with Firebase. }
An effort to make a clone of Google Keep in play-scala with Firebase.


Go to Page Two
Use the form below to make a Pizza. After you submit the Pizza, its name will appear in the list below.
Once you have made a few Pizzas, navigate to Page Two and click the button to see your Pizza list on that page.


RADVD
Section: (8)Updated: 24 Jan 2008
Index Return to Main Contents
NAME
radvd - router advertisement daemon for IPv6SYNOPSIS
radvd [ -hsv ] [ -d debuglevel ] [ -C configfile ] [ -p pidfile ] [ -m logmethod ] [ -l logfile ] [ -f facility ] [ -t chrootdir ] [ -u username ]DESCRIPTION
radvd is the router advertisement daemon for IPv6. It listens to router solicitations and sends router advertisements as described in "Neighbor Discovery for IP Version 6 (IPv6)" (RFC 4861). With these advertisements hosts can automatically configure their addresses and some other parameters. They also can choose a default router based on these advertisements.Note that if debugging is not enabled, radvd will not start if IPv6 forwarding is disabled. IPv6 forwarding can be controlled via sysctl(8), net.ipv6.conf.all.forwarding on Linux or net.inet6.ip6.forwarding on BSD.
Similarly, the configuration file must not be writable by others, and if non-root operation is requested, not even by self/own group.
OPTIONS
For every one character option there is also a long option, which is listed right next to the "short" option name:
- -v, --version
- Displays the version of radvd and then aborts.
- -h, --help
- Displays a short usage description and then aborts.
- -s, --singleprocess
- On Linux if username is specified, privilege separation is enabled and there will be two processes. This option disables privilege separation, and as a result, the non-privileged radvd process does not have permissions to change interface configuration.
- -d debuglevel, --debug debuglevel
- With this option you turn on debugging information. The debugging level is an integer in the range from 1 to 5, from quiet to very verbose. A debugging level of 0 completely turns off debugging. If a debugging level greater than 0 is used, radvd doesn't background itself on start. The default debugging level is 0.
- -C configfile, --config configfile
- Specifies an alternate config file. Normally the compiled in default /etc/radvd.conf is used.
- -p pidfile, --pidfile pidfile
- Specifies an alternate pidfile. Normally the compiled in default /var/run/radvd/radvd.pid is used.
- -m method, --logmethod method
-
Specifies the logging method to use. Possibly values are:
-
- none
- Completely disables any logging.
- logfile
- Logs to the logfile which is specified by the -l option. If no logfile is specified on the command line, then a compiled in default is used (see next option).
- stderr
- Logs to standard error.
- stderr_syslog
- Logs only the high messages (of at least LOG_ERR priority) to standard error, and everything to syslog (default method).
- syslog
- Logs to syslog.
-
- -l logfile, --logfile logfile
- Specifies the logfile to use when using the logging method logfile. The default logfile is /var/log/radvd.log.
- -f facility, --facility facility
- Specifies the facility (as an integer) when using syslog logging. Default is LOG_DAEMON.
- -t chrootdir, --chrootdir chrootdir
-
If specified, switches to
chrootdir
before doing anything else. This directory and its
subdirectories must have been populated first.
For security reasons,
-u
must always be used when using
chrootdir.
Note that on Linux radvd requires access to the /proc filesystem, so it is more challenging to set up the chroot environment.
- -u username, --username username
- If specified, drops root privileges and changes user ID to username and group ID to the primary group of username. This is recommended for security reasons. You might also need to use -p to point to a file in a username -writable directory (e.g. /var/run/radvd/radvd.pid).
FILES
/usr/sbin/radvd /etc/radvd.conf /var/run/radvd/radvd.pid /var/log/radvd.log
BUGS
There certainly are some bugs. If you find them or have other suggestions please contact Pekka Savola<EMAIL_ADDRESS>SEE ALSO
radvd.conf(5), radvdump(8)
AUTHORS
Pedro Roque<EMAIL_ADDRESS>- wrote first version for Linux Lars Fenneberg<EMAIL_ADDRESS>- previous maintainer Nathan Lutchansky<EMAIL_ADDRESS>- previous maintainer Pekka Savola<EMAIL_ADDRESS>- current maintainer Craig Metz<EMAIL_ADDRESS>- port to NRL's IPv6 code for BSD4.4 Marko Myllynen<EMAIL_ADDRESS>- RFC 2461 update, Mobile IPv6 support Jim Paris<EMAIL_ADDRESS>- Privilege separation support
Index
This document was created by man2html, using the manual pages.
Time: 05:34:29 GMT, December 24, 2015


We believe that organizers shouldn't have to start from scratch. When you're trying to get the word out, you shouldn't have to learn how AWS works. If you want to accept donations, you shouldn't have to hire an accountant. We provide organizers and civic hackers with both bureaucratic know-how and nuts-and-bolts tech tools so they can get right to work.
The District is full of great people with great ideas. We are lucky to know a few of them, but there are countless more. We serve as a convener, making connections to bring like-minded people together, to match complementary skills, or to develop ideas through human-centered research and design.
Creating and maintaining a 501(c)(3) is not a trivial task, but it can be essential for receiving the donations that are a key part of a project's existence.
We've jumped through those hoops, and want to share the benefits with other like-minded groups, both formal and informal, that share the purpose outlined in our articles of incorporation.
We are a tax-exempt 501(c)(3) non-profit, and our programs are entirely supported through donations and grants.
Help us keep this all going by making a donation of any size—it all helps!


I am a very long content, becuase having a lot of content is better when you just have to write stuff that do not need to make any sense. Generating content like this is so easy that I can keep on writting and nobody will notice that I am super long and empty in terms of information, but full of letters.


Education
2009 ~ 2013, SCUT, B.E. ,
Optical Information Science and Technology
Major work before
2013 ~ 2016, Optical R&D Engr ,
Leading the optical lab in CCIC ,
development of Redmi Note 4 backlight module
Self-taught web developer
2016.03 ~ ··· ,
Start project challenges from IFE(major in native JS & CSS) ,
study in freeCodeCamp(more focus on Bootstrap & JQuery) ,
also get many support from W3School, Github, & MDN, etc
Competences and Self-assessment
Javascript, HTML5, CSS3, jQuery, Bootstrap3 ,
development of basic projects, continuous learning
A Front-end Engineer ? A Programmer !
Before I become a real front-end engineer ,
I think at first I am a programming enthusiasts ,
only in this way can I find the art of programming ,
and try my best to be a excellent front-end engineer


A mobile phone is a telephone that can make and receive calls over a radio frequency carrier while the user is moving within a telephone service area. The radio frequency link establishes a connection to the switching systems of a mobile phone operator, which provides access to the public switched telephone network (PSTN). Most modern mobile telephone services use a cellular network architecture, and therefore mobile telephones are often also called cellular telephones or cell phones. In addition to telephony, modern mobile phones support a variety of other services, such as text messaging, MMS, email, Internet access, short-range wireless communications (infrared, Bluetooth), business applications, gaming, and photography. Mobile phones which offer these and more general computing capabilities are referred to as smartphones.


After verifying your information, we will upgrade your account, allowing you to add menus to your carts, edit information, modify the photos of your cart, and buy advertisements.


Home
Data File Upload
Action
Settings
Automate Task
Choose an action:
{% for action in action_list %} {% if selected_action == action %}
{{action}}
{% else %}
{{action}}
{% endif %} {% endfor %}
Execute
{{result}}
Export Result


After installing .Net Core, creating a .Net Core application, from the command line, is exactly the same.
-
Create a foldder
mkdir FirstNetCore
-
Move into the folder
cd FirstNetCore
-
Create the project
dotnet new
This will produce an output like so:
Looking into the folder, one finds two files were created:
-
Programs.cs - the program code that looks like this:
using System;
namespace ConsoleApplication
{
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
-
project.json - the project definition that looks like this:
{
"version": "1.0.0-*",
"buildOptions": {
"emitEntryPoint": true
},
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0-rc2-3002702"
}
},
"frameworks": {
"netcoreapp1.0": {
"imports": "dnxcore50"
}
}
}
Notice that that is no reference to Programs.cs file project.json. This is because, in the
new era of Microsoft projects, it's assumed that all files in the project file's folder and its sub-folders
are included in the project. Files can be excluded, but that's for later on...
-
Get project dependecies
The project definition, in project.json> file just generated, references, in this case only, one dependency,
that needs to be retrieved. For that:
dotnet restore
This should have an output similar to the one found here.
-
Build the project
This step is optional because the next step will build if build wasn't been done before. To build:
dotnet build
That should have an output similar to this:
-
Run the application
Still in the command line
dotnet run
That should have an output similar to this if the previous step (build) was performed:
And an output similar to this if previous step (build) was skipped:


Here are our proud members of our guild, scroll down to learn more about them!
Akuma
Arkay
Team: RebelLioN
TrOY
Team: RebelLioN
Bukky
Team: RebelLioN
Nissim
Team: RebelLioN
LegendARIEs
Loere
Team: RebelTigeR
Arkane
Team: RebelTigeR
Green Hornet
Team: RebelTigeR
Moalze
Team: RebelTigeR
CJMantle
Team: RebelTigeR
MrTeriyaki
Team: MYCC
Cxx
Team: MYCC
YxYx
Team: MYCC
Crommo
Team: MYCC
Apfel123
Team: Pinacolada
sialom
Team: Pinacolada
FredTheBakerEU
Team: Vertigo Onyx
Gusgus
Team: Bears Comeback
DANIEL_SKY123
Grath2
nothere
XxJohnxX
Ph0eNiX
BioLogiCaL
HCYekun
LowkeyAssassin
ThatGuyInSpace


I want to learn your watering can preferences
To be more precise, I'm trying to find out whether I can learn about your watering can preferences by treating this online store as a species of living shops. In technical terms, an artificial life type selection mechanism drives a genetic programming core which evolves the SQL-queries that result in the products you are looking at. Darwinism in action, baby.
To participate in the experiment, imagine you are in dire need of a watering can. Click products you find interesting and the store adapts to your behaviour. Didn't find anything of your liking? Come back tomorrow: the offering will change based on the interests of people like you. There's a signup form for a daily reminder below - I'll acknowledge your participation in the paper if you sign up :)
Thanks so much for participating!
Want to check out a different variety of this store right now? Click here, but note that different generations can have an equal or similar fenotype.
Interested in the genotype of ALL THE STORES? Check it out.
Today's hot watering cans
{{product.name}}
{% if product.price_old|float > product.price|float %} (€Visit product page »


The tal:repeat
attribute
A tal:repeat
attribute is used to repeat a subtree of the markup (an element and all of its content & descendents) for every item within an IEnumerable
collection.
Developers may think of this as being similar to a foreach
loop.
The syntax of a repeat attribute is comprised of:
- A variable name
- The TALES expression which is an
IEnumerable
collection
The variable name must follow the same rules as a tal:define
variable name, notably it must be a valid C# variable name.
Additionally, if the TALES expression does not evaluate to one of null, or an object which implements IEnumerable
, or an instance of
The element is duplicated for each item in the collection
The functionality of the tal:repeat
attribute will duplicate the entire subtree (starting with the element upon which the tal:repeat
attribute is present) once for every item in the collection.
All TAL attributes in that subtree are also duplicated and may thus be evaluated many times.
In each iteration, a local variable is created using the variable name specified in the tal:repeat
attribute.
That variable's value is set to the item from the current iteration of the collection.
The iterations and the variable values use the exact same order as which the IEnumerable
returns them.
Any inherently-ordered collections such as IList<T>
will have their order respected by repeat attribute.
All other TAL attributes on the element or its descendents (including those which have been duplicated) are handled as-normal as if the template source had originally been written with those repetitions hard-coded.
Beware of order-of-operations
As noted in the table listing all TAL attributes, the tal:repeat
attribute is processed after tal:define
attributes & tal:condition
attributes.
This creates a very easy-to-make mistake as shown in the following code snippet:

Item name

Can you see the mistake?
Even though the tal:repeat
attribute is written before the tal:define
attribute, it will be processed afterwards.
This means that the tal:define
attribute will attempt to evaluate the expression item/name
before the item
variable has been created, and will almost surely raise an error.
If the collection is empty
If the expression evaluates to an IEnumerable
which is empty (has no iterations) then the subtree beginning with the element which has the tal:repeat
attribute is removed from the rendered output entirely and is not processed.
In other words, no items means no repetitions of the markup.
If the collection is null
If the expression evaluates to a null reference, then the behaviour is exactly the same as if the action were aborted, as described below.
Aborting a tal:repeat
attribute
If the expression evaluates to an instance of AbortZptActionToken
, such as via the root context default
then the subtree beginning with the element which has the tal:repeat
attribute is left as-is.
Also, when a repeat attribute is aborted, no variable is defined for the current iteration.
Be aware that this could cause errors when ZPT processes TAL attributes upon descendent elements, if they attempt to make use of the 'current iteration' variable.
If the expression result is not IEnumerable
If the expression result is not IEnumerable
and is also neither null or an instance of AbortZptActionToken
then ZptSharp will raise an error.
Repeat variables
As well as a local variable, metadata about the current iteration is also accessible from a special root context named repeat
.
The contents of the repeat
root context are a collection of named objects corresponding to all of the 'current iteration' variables which are currently in-scope.
Each is named using the variable-name given in its corresponding tal:repeat
attribute.
Each of these 'repeat objects' provides the following properties:
| Property | Meaning |
|---|---|
index |
The zero-based index of the current iteration |
number |
The one-based index of the current iteration (equivalent to index + 1 ) |
even |
true if the index is an even number (0, 2, 4 etc), false otherwise |
odd |
true if the index is an odd number (1, 3, 5 etc), false otherwise |
start |
true if the index is zero, false otherwise |
end |
true if the current iteration is the last, false otherwise |
length |
The count of all items in the collection |
letter |
A string 'letter reference' for the current item: a, b, c, ... aa, ab, ac etc |
Letter |
The uppercase equivalent of letter |
roman |
A lowercase roman-numeral representation of number : i, ii, iii, iv etc |
Roman |
The uppercase equivalent of roman |
Examples
A table showing the roman numerals for 1 to 10
Let's presume that the model expression here/oneToTen
holds the result of Enumerable.Range(1, 10)
(using Enumerable
from the System.Linq
namespace).
The following example would create a table showing the decimal number on the first column and its uppercase roman numeral equivalent on the second column.

Decimal
Roman

Decimal number
Roman number

A list of items in a shopping cart
Let's presume that the model expression here/shoppingCartItems
holds a collection of objects which are instances of the following class.
public class ShoppingCartItem
{
public int Quantity { get; set; }
public string Name { get; set; }
public string ImageUrl { get; set; }
}
Here is some sample markup for a list of shopping cart items.

Item name
Quantity
<input class="quantity"
id="itemQuantity_0"
value="0"
type="text"
tal:attributes="value item/Quantity;
id string:itemQuantity_${repeat/item/number}">

This example brings together a number of techniques:
- The
src
attribute for the image is replaced using atal:attributes
attribute - The item name is filled-in using a
tal:content
attribute - The
<input>
element for the quantity is assigned a uniqueid
attribute by using the current repetition-number - The

element has itsfor
attribute set to the same value as theid
of the corresponding<input>
element


Appendix¶
In Appendix, I will give you some tips for analyzing Rosetta 2.
Debugging an x86_64 emulation process at the arm64 instruction-level¶
When analyzing Rosetta 2 with LLDB, we need to trace its behavior at the arm64 instruction-level. However, if you naively start LLDB and run an x86_64 executable, you will find that you can only debug at the x86_64 instruction-level*.
$ cat test.c
#include <stdio.h>
int main() {
puts("Hello World");
}
$ clang -arch x86_64 test.c -o test.out
$ lldb test.out
(lldb) target create "test.out"
Current executable set to 'test.out' (x86_64).
(lldb) breakpoint set -n main
Breakpoint 1: where = test.out`main, address = 0x0000000100003f60
(lldb) r
Process 63236 launched: '/Users/konakagawa.ffri/Documents/ProjectChampollion/test.out' (x86_64)
Process 63236 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
frame #0: 0x0000000100003f60 test.out`main
test.out`main:
-> 0x100003f60 <+0>: pushq %rbp ; <--- (x86_64 instructions are displayed)
0x100003f61 <+1>: movq %rsp, %rbp
0x100003f64 <+4>: subq $0x10, %rsp
0x100003f68 <+8>: leaq 0x33(%rip), %rdi
Target 0: (test.out) stopped.
* Note that tracing tools such as DTrace does not support x86_64 emulation process tracing. For example, DTrace only displays "DTrace cannot instrument translated processes" and cannot trace the execution flow of an x86_64 emulation process.
How can we debug these x86_64 emulation processes at the arm64 instruction-level?
We can resolve this problem using the following program (runner.c
), which only takes command-line arguments and calls execve
.
// runner.c
#include <unistd.h>
int main(int argc, char* argv[]) {
if (argc != 2) {
return 1;
}
execve(argv[1], NULL, NULL);
return 0;
}
Build runner.c
with clang -arch arm64 runner.c -o runner.out
.
Then, run the x86_64 executable test.out
by specifying it as a command-line argument of runner.out
.
$ clang -arch arm64 runner.c -o runner.out
$ lldb runner.out test.out
(lldb) target create "./runner.out"
Current executable set to '/Users/konakagawa.ffri/Documents/ProjectChampollion/runner.out' (arm64).
(lldb) settings set -- target.run-args "test.out"
After continuing the execution, this program stops at the entry point of the Rosetta 2 runtime
.
Then, we can continue debugging this program at the arm64 instruction-level.
(lldb) r
Process 64284 launched: '/Users/konakagawa.ffri/Documents/ProjectChampollion/runner.out' (arm64)
Process 64284 stopped
* thread #2, stop reason = exec
frame #0: 0x00007ffdfff7a46c runtime`_mh_execute_header + 9324
runtime`_mh_execute_header:
-> 0x7ffdfff7a46c <+9324>: mov x19, sp
0x7ffdfff7a470 <+9328>: and sp, x19, #0xfffffffffffffff0
0x7ffdfff7a474 <+9332>: mov x29, sp
0x7ffdfff7a478 <+9336>: ldr x20, [x19, #0x20]
Target 0: (runtime) stopped.
Why can we debug it at the arm64 instruction-level when we execute it via runner.out
?
It seems to be related to the fact that debugserver
binaries are different between lldb runner.out test.out
and lldb test.out
.
If you simply run lldb test.out
, the process tree looks like this.
(...snip...)
| | |-+= 03574 konakagawa.ffri /Applications/Xcode.app/Contents/Developer/usr/bin/lldb test.out
| | | \-+= 03581 konakagawa.ffri /Library/Apple/usr/libexec/oah/debugserver --fd=7 --native-regs --setsid
| | | \--= 03580 konakagawa.ffri /Users/konakagawa.ffri/test.out
(...snip...)
In this case, you can see that the /Library/Apple/usr/libexec/oah/debugserver
(called oah debug server in the following) process is running as a child process of lldb test.out
.
On the other hand, when you run it through lldb runner.out test.out
, the process tree looks like this.
(...snip...)
| | |-+= 64282 konakagawa.ffri /Applications/Xcode.app/Contents/Developer/usr/bin/lldb ./runner.out test.out
| | | \-+= 64285 konakagawa.ffri /Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/Resources/debugserver --fd=7 --native-regs
| | | \--= 64284 konakagawa.ffri (test.out)
(...snip...)
In this case, you can see that /Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/Resources/debugserver
(hereinafter this is referred to as the native debugger) is running.
In summary, LLDB uses:
/Library/Apple/usr/libexec/oah/debugserver
as a debug server in the execution viarunner.out
- Otherwise,
/Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/Resources/debugserver
as a debug server
The oah debug server is supposed to be a debug server created specifically for debugging the x86_64 emulation process. This debug server probably translates LLDB x86_64 instruction-level commands (e.g., stepping and setting breakpoints) to arm64 instruction-level commands. Therefore, executions at the arm64 instruction-level seem to be completely transparent to LLDB.
On the other hand, when you run test.out
via runner.out
, the native debugger will be launched because runner.out
is an arm64 executable.
Internally, the execve
is called to execute the x86_64 code, but the native debugger is still used, which enables us to debug at the arm64 instruction-level.
Customizing Ghidra for analyzing AOT files¶
In part1, I mentioned that I modified Ghidra for analyzing AOT files to:
- Enable Ghidra to disassemble
cfinv
, which is not supported in Ghidra 9.2.1 - Improve decompilation results for the proprietary calling convention used in AOT files
In this section, I will introduce how to customize Ghidra for analyzing AOT files.
Adding a new instruction to Ghidra's disassembly engine¶
Firstly, I will explain how to add the cfinv
instruction to Ghidra's disassembly engine.
Introduction to P-Code and SLEIGH¶
To add a new instruction to Ghidra, we need to edit the SLEIGH file of the target processor.
Before explaining SLEIGH, let me briefly explain P-Code.
P-Code is a language for describing the behavior of processors in a generic way. In Ghidra, each instruction is converted to one or multiple P-Code operations during the disassembly process, so that processor-independent analysis can be performed internally. You can check the converted P-Code by editing the "Edit Listing Field."
Let's look at a simple example. Consider the following arm64 instructions.
1000170dc ldr x8,DAT_100054450
1000170e0 cbz x8,LAB_100017174
1000170e4 mov w20,#0x2
The P-Code operations corresponding to these three instructions are as follows. The corresponding arm64 instructions are shown together as comments.
x8 = LOAD ram(0x100054450:8) ; ldr x8,DAT_100054450
$U31f0:1 = INT_EQUAL x8, 0:8 ; cbz x8,LAB_100017174
CBRANCH *[ram]0x100017174:8, $U31f0:1 ; cbz x8,LAB_100017174
x20 = COPY 2:8 ; mov w20,#0x2
The ldr
and mov
instructions correspond to the LOAD
and COPY
operations, respectively.
You can also see that the cbz
instruction corresponds to two P-Code operations, INT_EQUAL
and CBRANCH
.
Now, how does Ghidra define the relation between these instructions and P-Code operations? To define this, Ghidra has a domain-specific language, which is called SLEIGH.
Let's look at the description of the SLEIGH file for arm64.
The SLEIGH file for arm64 is located in the folder ${GHIDRA_INSTALL_DIR}/Ghidra/Processors/AARCH64/data/languages/
.
$ ls Ghidra/Processors/AARCH64/data/languages
AARCH64.cspec AARCH64.sla AARCH64_base_PACoptions.sinc AARCH64neon.sinc
AARCH64.dwarf AARCH64.slaspec AARCH64_win.cspec AARCH64sve.sinc
AARCH64.ldefs AARCH64BE.sla AARCH64base.sinc
AARCH64.opinion AARCH64BE.slaspec AARCH64instructions.sinc
AARCH64.pspec AARCH64ldst.sinc
Open the AARCH64base.sinc
file and look at the portion of this file defining the cbz
instruction as follows.
The definition consists of several sections:
- Display section: it describes how to display this instruction in the disassembled listings.
- Bit pattern sections: they describe the bit pattern encoding of this instruction.
- Semantics actions section: it describes the semantics of the instruction in C-like syntax (eventually converted to P-Code operations by the SLEIGH compiler)
- In the example below, the conditional expression
Rt_GPR64 == 0
is converted toINT_EQUAL
andif (...) goto
is converted toCBRANCH
.
- In the example below, the conditional expression
(...snip...)
:cbz Rt_GPR64, Addr19 // <-- The display section describes how to display this instruction and define local identifiers used in the semantics actions section
is sf=1 & b_2530=0x1a & cmpr_op=0 & Addr19 & Rt_GPR64 // <-- The bit pattern sections describe how this instruction is encoded
{
// The semantics actions section
// Rt_GPR64 is a general purpose register
// Addr19 is a jump address when the condition is met
if (Rt_GPR64 == 0) goto Addr19; // <-- It describes the semantics of this instruction
}
(...snip...)
Please refer to the HTML files under ${GHIDRA_INSTALL_DIR}/docs/languages
for more information on the syntax of SLEIGH.
Adding the cfinv
instruction to the arm64 Ghidra's SLEIGH file¶
Let's add the cfinv
instruction to the arm64 Ghidra's SLEIGH file.
According to the Arm® Architecture Reference Manual, we can find the description of cfinv
as shown in Figure 1.
You can find that its encoding is 0xd500401f, and it inverts the value of PSTATE.C
.
From this, we can define the cfinv
instruction as follows.
:cfinv
is b_0031=0xd500401f
{
CY = !CY;
}
First, in the display section, cfinv
does not take any operands.
So, you can simply write cfinv
for this section.
In the bit pattern sections, we need to write that b_0031=0xd500401f
*, which indicates the bit encoding of this instruction is 0xd500401f.
Finally, in the semantics actions section, we describe the operation of the cfinv
instruction.
PSTATE.C
is modeled by a variable named CY
in SLEIGH, so here we can write the operation inverting PSTATE.C
value with the ! operator and reassigning it to CY
.
*
b0031
is called "token" in SLEIGH, which is used for modeling byte sequences building machine code.
Adding a new calling convention¶
Next, I will explain how to add a new calling convention used in AOT files to Ghidra.
Compiler specification (CSPEC)¶
To add a new calling convention to Ghidra, we need to edit the CSPEC file of the target processor.
CSPEC is one of the language modules used in Ghidra for supporting disassembly and analysis of a particular processor. Its purpose is to describe an Application Binary Interface (ABI) of a compiler generating target binaries.
CSPEC is just an XML file that defines:
- Calling conventions
- Data sizes of primitive data types (e.g., the width of
wchar_t
andvoid*
, which vary depending on platforms and compilers)
For more details, see the documentation of Ghidra decompiler*.
* Since only the source code of the Ghidra decompiler documentation is provided by default, you need to create HTML files following this procedure.
In this section, let me explain the overview of CSPEC by taking a look at the CSPEC file for x86_64 executables built by GCC. Then, I will introduce the CSPEC file for the AOT file analysis.
Example of CSPEC¶
The CSPEC file for analyzing x86_64 binaries compiled with GCC is located at ${GHIDRA_INSTALL_DIR}/Ghidra/Processors/x86/data/languages/x86-64-gcc.cspec
.
I show the part of this file as follows.
<?xml version="1.0" encoding="UTF-8"?>
<compiler_spec>
<data_organization>
<absolute_max_alignment value="0" />
<machine_alignment value="2" />
<default_alignment value="1" />
<default_pointer_alignment value="8" />
<pointer_size value="8" />
<wchar_size value="4" />
<short_size value="2" />
<integer_size value="4" />
<long_size value="8" />
<long_long_size value="8" />
<float_size value="4" />
<double_size value="8" />
<long_double_size value="16" />
<size_alignment_map>
<entry size="1" alignment="1" />
<entry size="2" alignment="2" />
<entry size="4" alignment="4" />
<entry size="8" alignment="8" />
</size_alignment_map>
</data_organization>
...(snip)...
<compiler_spec>
CSPEC always has <compiler_spec>
as the root XML tag, and compiler features are described as child elements of this tag.
Here, I will explain two typical elements <data_organization>
and <prototype>
.
<data_organization>
element¶
This element is used to define the memory alignment and the data sizes of primitive types.
In the above example, the pointer size is 8 bytes because the CSPEC is for x86_64 binaries. You can find the following element specifying the pointer size as follows.
<data_organization>
...(snip)...
<pointer_size value="8" />
...(snip)...
</data_organization>
For the data sizes of primitive types, you can find the following descriptions defining these sizes.
<data_organization>
...(snip)...
<wchar_size value="4" />
<short_size value="2" />
<integer_size value="4" />
<long_size value="8" />
<long_long_size value="8" />
<float_size value="4" />
<double_size value="8" />
...(snip)...
</data_organization>
<prototype>
element¶
This element is used to define calling conventions.
Let's take a look at the description of __stdcall
defined in x86-64-gcc.cspec
.
...(snip)...
<prototype name="__stdcall" extrapop="8" stackshift="8">
<!--
You can see that the following child elements of the prototype
are defined:
input
: it specifies how to pass parameters to a function (e.g., through registers or stack).output
: it specifies a storage area for a return value of a function.killedbycall
: it describes registers that are destroyed by a function call.unaffected
: it describes registers that are preserved across a function call.
For example, the registers specified for unaffected
in the above example are RBX, RSP, RBP, R12, R13, R14, and R15.
According to table 3.4 in System V Application Binary Interface AMD64 Architecture Processor Supplement, these registers are specified as "Yes" in the "Preserved across function calls" column.
You can figure out that the description in CSPEC consistent with the System V ABI calling conventions.
The same is true for the elements, such as killedbycall
, input
, and output
.
AARCH64_aot.cspec
: CSPEC for analyzing AOT files¶
As mentioned in part1, a proprietary calling convention is used for function calls in AOT files.
This calling convention is based on the System V ABI calling convention with the x86_64 registers converted to arm64 registers according to the table in part1.
So, we can make a CSPEC file for analyzing AOT files by changing the registers of x86-64-gcc.cspec
based on the table.
You can find the CSPEC file I created at the GitHub repository.


## Tell the browser not to render this page if it's contained within a frame. ## This is to prevent Clickjacking attack. $HttpServletResponse.setHeader("X-Frame-Options", "DENY") #set( $messageKeyPrefix = "oauth.access.grants.page.template." )


About
世界Python爱好者的盛会PyCon首次在中国举办，由Python软件基金会下的PyCon.Org授权中国办第二届PyCon China Conference。本次大会由TopGeek、CPyUG、42区、GDG上海、GDG杭州、GDG西安、GDG合肥联合举办。
PyCon.Org is an international community for the Python programming language holds several conferences each year.
News Report (listed in no particular order):
The PyCon world includes:
- "PyCon" in the United States
- "EuroPython" in Europe
- "EuroSciPy" in Europe
- "Kiwi PyCon" in New Zealand
- "PyCon Asia Pacific" in Singapore
- "PyCon AR" in Argentina
- "PyCon AU" in Australia
- "Python Brasil" in Brazil
- "PyCon DE" in Germany
- "PyCon Finland" in Finland
- "PyCon FR" in France
- "PyCon India"
- "PyCon Ireland"
- "PyCon Italia" in Italy
- "PyCon PL" in Poland
- "PyCon UK" in the United Kingdom
- "PyCon Ukraine" in Ukraine
- "SciPy" in the United States
- "SciPy.in" in India
主办方
TopGeek Salon
This is a geek-oriented organization which holds regular offline activities to discuss internet trends and share experience. This organization is free from restriction as it is not divided into language or industry groups. The group is used to develop ideas, promote group learning, and to share resources to solve problems and promote communication. Our slogan is: "once a geek, always a geek"
Characteristics of TopGeek.
- We focus on offline activities, and promoting cross-domain communication regardless of terminal devices, developing languages, etc.
- We encourage frequent communication and detailed studies, especially for senior developers.
- We focus on minor technical groups when studying mainstream technology and new opportunities.
About TopGeek
Organization blog.：http://topgeek.org/
Sina weibo.：http://weibo.com/topgeek
Organizer：陈世欣（2Style4You CTO），王宏（微软中国高级经理），李锟（上海鹏图信息技术有限公司CTO），吕国宁（Intridea资深工程师），罗小能，支晓勇（91Office技术总监）
Previous activities of TopGeek
- TopGeek1，Reportshttp://topgeek.org/?p=129
- TopGeek2，Reportshttp://topgeek.org/?p=167
- TopGeek3，Reportshttp://topgeek.org/?p=209
- TopGeek4，Reportshttp://topgeek.org/?p=243
- TopGeek5，Reportshttp://topgeek.org/?p=264
CPyUG (China Python User Group)
The group is a community for local pythoners to communicate offline and has been held mainly in Beijing and Shanghai for at least 5 years, but is now expanding to other areas like Nanchang and Anhui.
42区，找到给你答案的人
"42qu" is a C2C trading platform based on personal skills, users can ask variety questions from whom are either expert or good in the specific domain, charges by time. This could be done online or face-to-face.
GDG (Google Developer Group)
This is a global community created by Google fans to enable technical communication and organize activities to develop technologies.
金山软件
金山WPS Office移动版是金山公司推出的、运行于Android平台上的全功能办公软件，国内同类产品排名第一，Google官方Android市场排名领先。用户遍布全球220多个国家和地区。完全兼容桌面办公文档，支持DOC/DOCX/WPS/XLS/XLSX/PPT/PPTX/TXT/PDF等23种文件格式。方便用户在手机和平板上使用，满足您随时随地办公的需求。
协办方
Sina App Engine
Sina is a service in China and for global Chinese communities, online media and mobile value-added service providers.Sina has a number of localized web sites targeting Greater China and overseas Chinese mission, through its business lines: providing online news and content services, Sina (SINA.com), to provide micro-blog service microblogging (Weibo.com ) to provide mobile wireless value-added services Sina (SINA Mobile), and other business, the majority of users, including regional portals, mobile value-added services, microblogging, blog, audio and video streaming, photo album sharing, online games, e-mail, search, classified listings, fee-based services, e-commerce and enterprise e-solutions, including a range of services.