class: top, left, inverse, title-slide # Education & Globalization ## Session 04 ### Dr. Zhou Yisu 周憶粟 ### 2018/09/03 --- # Globalization and Related Processes ## Aims To understand other key concepts that describe the processes and structures involved in historical and contemporary realities To explore the relationships between these and the critiques made of them To explore how these relate to or overlap with processes and structures of globalization --- ## The world we live in today inherited much legacy from the past: .violet[Network] (e.g. Portuguese language linkage, English as medium of instruction) .violet[Culture/tradition] (e.g. type of festival we celebrate) .violet[Power relationship] (e.g. West v.s. the Rest) -- We are focusing on globalization, which is related to .orange[other processes] that affected large parts of the world in the past and still do today. --- ## Processes that shaped the world in the past & future Six major concepts can be identified to describe some of the these: - Imperialism 帝國主義 - Colonialism 殖民主義 - Development 發展 - Westernization 西方化 - Easternization 東方化 - Americanization 美國化 --- background-image: url(https://cdn.hk01.com/di/media/images/1706858/org/d1c2c6781e2e0255d0cdb8daf8223abd.jpg/rS9JImGGWItibcmAc38CqFDjkAnmggSHjXVfw411X8M?v=w1920r16_9) background-size: contain background-position: center bottom ## Story 1: Japanese High School Baseball Championship --- ## Mitsuru Adachi's baseball manga 安達充 .pull-left[ ![](https://upload.wikimedia.org/wikipedia/en/4/45/Touch-Tankobon-vol1-AdachiMitsuru.jpg)] .pull-right[ ![](https://upload.wikimedia.org/wikipedia/en/8/84/H2_volume_1_cover.jpg)] --- ## Baseball is pure and inspiring .pull-left[![](http://img5.cna.com.tw/www/WebPhotos/800/20180829/15297830.jpg)] .pull-right[ - 2018 marks the 100th anniversary of the game (est. 1915) - More than 4000 high schools participated in the compeititon. - The final 55 teams, representing each county, appeared in the national tournament in the historical .violet[Koshien Stadium] (阪神甲子園球場). - 2018's miracle team: .yellow[秋田県立金足農業高等学校], a rural school from northern Japan. - Highlights of the team https://www.youtube.com/watch?v=i5dKrIDEmu4 ] --- ## Baseball is important in modern Japanese history First introduced by an American teacher Horace Wilson in .violet[1872]. Just 4 years after the .violet[Meiji Restoration] (明治維新) started. It embodies a foreign, modern, and civilized sports. -- In 1900s, baseball became a national sports. At the same time, Japanese imperial army was raging across Asia: - 1894-1895 First Sino-Japanese War (甲午戰爭): Qing dynasty ceded Taiwan to Japan - 1904-1905 Russo-Japanese War (日俄戰爭): Russia recognizes Korea as part of the Japanese sphere of influence and evacuated Manchuria 满洲 - 1910 Japan-Korea Treaty: Japan annex Korea completely. -- As a results of the war, more than 100,000 Japanese migrated from Japan to Taiwan, Manchuria, Korea. They built schools mostly for Japanese settlers. Baseball was brought to the colonies. --- ## 11th Summer Koshien -- On August 15th, 1926, then Japanese Prime Minister Wakatsuki Reijiro 若槻禮次郞 attended the 2nd day of competition and made a public announcement to the audiences: -- >.green[原文:] 剛健的精神存在於健康的體魄之中，國民體育之進步乃國家向上之要素。諸君通過公平競賽，促使國民體育進步，實爲無比幸福之事。祝願諸君之健鬥！ >.green[Translation:] The spirit of being healthy exists in a healthyy body. The progress of national sports is an element of our nation's uplifting. I wish you all can promote the advancement of national sports through fair competition, which is really a matter of happiness. Wish you all engage in hard and healthy fight! -- When asked by the reporter if he understood baseball, the PM said: "雖然看不太懂，但見識到了勇猛的氣勢。Although I don’t understand it, I saw the brave momentum." --- background-image: url(./pic/Wakatsuki.jpg) background-size: contain --- On the court, there are two teams competing: Osaka HS vs. Dalian Commercial High 大連商業高中 (3-2, DL made 4 consecutive appearance in the national tournament). DL team mostly made of Japanese settlers but was cheerled by Chinese songs. -- Dalian Commercial High school was among the five highschools from Manchuria: - 青島中學 Tsingtao high school - 奉天商業中學 Fengtian Commercial high school - 天津商業高中 Tianjin Commercial hign school - 南滿工業中學 Southern-Manchuria Industrial high school -- According to historian Kawanishi Reiko, having a team from the Japanese colony has much symbolic meaning: - Bid for political support of the sports from the Japanese empire. - Symbolize the Japanese spirit to domestic & colony audience: + Build your body and hone the will (強健體魄、磨練意志). + Strengthen traditional Bushido (武士道) value: Loyalty & sacrifice (忠勇犧牲) - Maintaining the emotional connection. Softens the relationship between colonies and Japan mainland. --- background-image: url(./pic/dalian-commercial.jpg) background-size: contain ### Report from Asahi News --- background-image: url(./pic/team.jpg) background-size: contain --- background-image: url(./pic/kano.jpg) background-size: contain 1931 嘉義農林學校 Chiayi Agricultural College received 2nd runner-up in the tournament --- background-image: url(https://lh5.googleusercontent.com/-FqCUNi5hS_w/UyPukR-ejoI/AAAAAAAAGHo/cKsrWDUW5Pg/w958-h539-no/6708c73b-dff1-43bc-9eff-5701a866c485.jpg) background-size: contain background-position: center bottom ### 2014 movie _Kano_ by 魏德聖 --- ## Imperialism .violet[Describes the various methods employed by one country to gain control of another country or geographical area, and then to exercise control - especially political, economic, and territorial - over that country or (geographical area) or over many other countries.] -- Term originated from development of Roman Empire, indicating political forms that had characteristics of Roman rule (e.g. powerful leader, the ruled people & land). -- Imperialism encompass a range of .green[controls]: - .green[Economic imperialism]: e.g. British East India Company - .green[Political imperialism]: e.g. Soviet Union with its satellite states - .green[Cultural imperialism]: e.g. US domination of film, TV, and print; Western textbook. Association between rulers over geographic spaces and people who lived there lead to many globalization terms of today (trade, migration, communication, etc) because of the past imperial power. --- ## Imperial powers fight for... Ever expanding .green[territorial control] (i.e. 19th century was among Germany, Italy, Belgium, Great Britain, France, and USA fight over Africa; Russia and Japan fight over Asia) .green[Political control] (Soviet Union controlled satellite states. Declined significantly after the demise of the Soviet Uninion in 1991) .green[Economic control] (remains powerful) - Resources for capitalistic production - Market for new products --- ## What role does education serve? Imperialism often involves ".violet[the policy of extending the rule or authority of an empire or nation over foreign countries]" (anthropologist Wade Davis). Education is seen as an important means to .red[enculturate] the people originally live there. -- Its pedagogy and curriculum often involve: - creating a hierarchy of the superior and the inferior - create an authority that the "learning" people could not challenge - generation of humiliation, a sense of worthlessness -- The strong-handed territorial control always needs the soft-handed education to "smooth things out": - Toward the ruled people - Toward own citizen .footnote[.red[enculturate]: 濡化 the process by which an individual learns the traditional content of a culture and assimilates its practices and values. ped·a·go·gy: 教學法] --- ## Colonialism .violet[The creation by the colonial powers in the country or geographical area that has been colonized to run its internal affairs, including its settlements.] -- Often used inter-changeable with imperialism but specifically focus on .green[political control], often involving the development of settlements in the territory for the purpose of economic exploitation.red[1]. -- Colonialism generally involves settlers as well as much more .green[formal mechanisms of control] than imperialism. Colonialism often entails the colonizer creating an administrative apparatus (i.e. colonial administration 殖民地政府) within the colonized country. Imperialism is more about economic control; colonialism is more about political control. .footnote[[1] In the extreme form of imperialism, controlling another country without the creation of colonies is possible. See Harvey, David. _Spaces of global capitalism._ Verso, 2006. (p.21)] --- ## Colonialism in modern history .orange[15th century]: European countries (especially Spain and Portugal) creating colonies in Africa and Asia. .orange[1820- WW I]: European countries + USA, Japan Most former colonies remained colonized until 20th century after a wave of .orange[decolonization] 去殖民化 movement: - revealing and dismantling colonialist power. - increased in 20th century, especially post WW II. --- ### Japanization in Taiwan & Korea ![](http://4.bp.blogspot.com/-dYD8Nn-u8xY/VGs20bjbeaI/AAAAAAAAY5g/6hma-1NWjmM/s1600/1118CG04%E6%97%A5%E6%B2%BB%E6%99%82%E6%9C%9F%E5%B0%8D%E5%8F%B0%E3%80%8C%E7%9A%87%E6%B0%91%E5%8C%96%E9%81%8B%E5%8B%95%E3%80%8D.jpg) --- ## Story 2. Rendille warrior in Kaisut, Kenya ![](https://img-fotki.yandex.ru/get/50666/97833783.1325/0_1998d6_2f2cadb0_XXXL.jpg) .footnote[Image credit: Jimmy Nelson ] --- background-image: url(http://4.bp.blogspot.com/-HuecZEH1WW0/UsCZ636wjPI/AAAAAAAABXA/caVWdInA7t8/s1600/sb7.jpg) background-size: contain --- background-image: url(http://www.dmitrimarkine.com/photography/pictures/School-in-Kenya-National-Geographic.jpg) background-size: contain --- background-image: url(http://www.thestar.com/content/dam/thestar/news/world/2015/09/21/worlds-large-refugee-camp-in-kenya-could-be-the-future/dadaab3.jpg) background-size: contain --- ## In the Kenya case Its people were transformed from pastoral nomads 遊牧民族 to modern day citizens -- They no longer herd cattle, raid enemy tribes but attend western-style schools. From a modern development perspective: - GDP per capita 人均國民收入 goes up - urbanization rate 城市化率 goes up - literacy rate 識字率 goes up - quality of life?? -- Education plays a vital role to modernize the country. -- Many of them remains unemployed (Kenya's unemployment rate is about .orange[40%]). Young men drifted into the slums of Nairobi trying to find a life in cash economy --- ## The cult of modernity 現代性? Instead of indoctrinating people to converted to any religion, it is now the conversion to modernity: - Modern knowledge, skills, academics - Pathway toward (un)employment -- Many people from traditional society, they aspire to be a world of affluence in which they will never find a place. they tend to find themselves at the lowest rung of the economic ladder that goes nowhere: .red[disaffected, alienated, taught to be a failure, unemployable] --- ## Critique of this approach -- Again, anthropologist Wade Davis: > Culture is not trivial. culture is not the songs we sing, the clothes we wear, the prayer we utter, even the cosmology we celebrate. .violet[Ultimately culture is about a body of moral and ethical values that every culture places around each individual to keep at bay the barbaric heart that history teaches us that lies within each of us.] It's culture that allows us to make sense out of sensation to find order and meaning in the universe. .footnote[trivial: 微不足道 Source for the quotation: https://www.youtube.com/watch?v=hwk2w-9aekA] --- ## Significance of story 2 Development/modernization paradigm brings us .violet[improvement of living standard, abundance of goods], but not necessarily .violet[meaning, or stability, or sense of belonging]. -- In fact, many believe that modernization process leads to the "lost of the traditional value" or culture. Such thoughts pave way for the revival of all sorts of ".violet[traditions]". --- ## Tradition worship 國學熱 ![](./pic/guoxue.jpg) --- ## It's complicated: Are traditional societies ideal? .pull-left[![wscale: 50%](./pic/lanzhou1.jpg)] .pull-right[![wscale: 50%](./pic/lanzhou2.jpg)] .pull-left[![wscale: 50%](./pic/lanzhou4.jpg)] .pull-right[![wscale: 50%](./pic/lanzhou5.jpg)] --- ## Development .violet[A "project" primarily concerned with the economic development of specific nations, usually those that were not regarded as sufficiently developed economically.] -- - Mainly post WW II, elitist from North to South (i.e. from more developed countries to less developed countries) - Assumed North the model for development - Nation-state as key unit (i.e. rational planning, industrial policies, investment in human capital, etc) - Motivated mainly by Western powers to help some weak nations, fear of spread of communism - Project has failed (reasons in the next slides) --- ## The development "project" Not just an economic project but "a method of rule" .red[2] Involved financial aid, sometimes technological, military, and food – leading to dependency Poorest nations mainly ignored. The North shaped the South according to its own will. .footnote[ [2] McMichael, Philip. 2008. _Development and Social Change: A Global Perspective_. 4th ed. Thousand Oaks, CA: Pine Forge Press.] --- # Other important theories .orange[Dependency theory] .red[3]: - Development project contributed to decline of independence in poor nations and reliance on North - Underdevelopment is part of development project, which in turn brings greater impoverishment - Capitalism is cause of development and underdevelopment - Less-developed countries could not follow the path of today's developed countries. .footnote[ [3] Frank, Andre Gunder. 1969. "The Development of Underdevelopment." _Monthly Review 18_ (4). [中文綜述](https://mp.weixin.qq.com/s/hNFvpjNVde0309ml6hNW-Q) ] --- ## Other important theories .orange[World-system theory] .red[4]: - The world is divided between .violet[periphery 邊緣] nation-states dependent on/exploited by .violet[core 核心] nation-states - To be able to maintain cosmopolitan centers (i.e. big cities around the world), the periphery must exist to provide cheap labor, agricultural products, energy resources, etc. + Core-periphery not only exist between countries, also within country .footnote[ [4] Wallerstein, Immanuel. 1974. _The Modern World-System: Capitalist Agriculture and the Origins of the European World-Economy in the 16th Century_. New York: Academic Press. [中文綜述](https://mp.weixin.qq.com/s/ZXakUf80mEV7pEbW3IGLSw) ] --- ## Toward a world culture in education? .orange[World Culture Theory] .red[5] tries to explain why modern education looks very much each other (in terms of years of schooling, curriculum, values being taught). It argues for a world culture modern when nations develop, they will embrace concepts such as equality, socioeconomic progress, and human development. They are the expansion of these modes of thoughts are rationalized, articulated and highly consensual. .footnote[ [5] Meyer, J. W., Boli, J., Thomas, G. M., and Ramirez, F. O. (1997). World Society and the Nation-State, _American Journal of Sociology, 103_ (1), 144--181. ] --- background-image: url(https://www.sup.org/img/covers/med_large/pid_18531.jpg) background-size: contain --- ## Westernization .violet[Economic, political and cultural influence of the West on the rest of the world.] - includes .violet[Americanization]. - is only a "one-way" 單向 flow compared to globalization. - as well as political and economic systems, includes exports such as technologies, languages, laws, lifestyle, and food. Now often seen to have negative connotations Implies homogenization but ignores differences within West and between West and rest - e.g. democracy and market economies experienced differently in Pakistan and China. Ignores importance of links between non-Western countries .footnote[ho·mog·e·ni·za·tion 均質化、均勻化] --- ## Easternization .violet[Economic and cultural influences of the East on the West.] - Westernization and Americanization too narrow. - Linked to internal factors in West and the flow of various influences from the East to West. + Eastern spirituality (i.e. yoga, Zen) + Ethnic restaurants and cuisines, including vegetarianism + Manufacturing imports + Management techniques and working methods - Growing with power of China. --- ## Influence of China ![](./pic/textbookuk.png) .footnote[Source: https://www.theatlantic.com/education/archive/2017/03/british-schools-hope-to-improve-performance-with-chinese-textbooks/520206/] --- ## .red[Summary] Today's globalization inherited much from past global processes: Imperialism and Colonialism are two major such processes in the past 200 years. - Shape our culture - Forge network based on the past expereince Today's globalization is marked by rapid modernization. - But at what cost? - Is it just? - Whose interest does it serve? - Do we need to choose from one way or another? --- ## Resources - Complete theory: Ritzer & Dean Chapter 3 - Theories of imperialism + Hardt, Michael, and Antonio Negri. 2000. _Empire_. Cambridge, MA: Harvard University Press. + Harvey, David. 2003. _The New Imperialism_. Oxford: Oxford University Press. - Fareed Zakaria (2011) argues "post-American age" involves "the rise of everyone else" rather than US decline: (https://www.youtube.com/watch?v=Zs4zw1O_MYE) The decline makes possible a global .violet[multipolarity] 多極 and global emancipation from American hegemony - Gideon Rachman (2017) _EASTERNIZATION: Asia’s Rise and America’s Decline: From Obama to Trump and Beyond_ - [帝國與野球：甲子園的暗面](https://www.thepaper.cn/newsDetail_forward_2381599) (The Empire and the Baseball: the Dark side of Koshien) - [Is traditional China an empire? by Mark Elliot](https://mp.weixin.qq.com/s?__biz=MzA5MjM2NDcwMg==&mid=2664297648&idx=1&sn=dd9f3a246631c2503f6ae8c12a2b97e9) (written in Chinese)


Mail Management
With proper permissions, you can modify the content of mails sent by the application.
On this page, you will find a list of mails with :
- Number of this template
- Language of this template
- Database table used to build the variables
- Mail recipient
- Mail subject
- Mail message
In subject or message, variables could be placed. They will be replace with values from the pointed out table.
Variables names are this table columns names.
Thos variables must be placed between #. Example : #IDX# display value from IDX column.
For some entries, recipient, subject or message could be replaced with USERDEF, they will be managed by the application
For some templates as the one sending mail to user, the database table will not be used
After modification, click on to validate.


{% extends "base.html" %} {% block header %} {% endblock %} {% block content %}
Posted by Steel Ricciotti on {{post[0].date}}
Posted by Steel Ricciotti on {{post[1].date}}
Posted by Steel Ricciotti on {{post[2].date}}
Posted by Steel Ricciotti on {{post[3].date}}


Created by: Mook Dang. Portfolio
Are you interested in learning a new Langauage for programming? if so, you are in the right place! Many people who are interested in learning will find that choosing a language is the hardest since most of us don't know where to start. Answer these few questions below to see what langauage is meant for you!!!
Base on your answer you should learn . Now go try to program.


UD for Akuntsu
Tokenization and Word Segmentation
- Akuntsú uses all 17 UPOS, although the class of adjectives is a complicated matter that requires more examination.
- Tokenization and semgmentatoin in Akunstú is straightforward. There are no multiwords that require spaces or dashes.
- In general, words are delimited by whitespace characters. Description of exceptions follows.
- According to typographical rules, many punctuation marks are attached to a neighboring word. We always tokenize them as separate tokens (words).
Mapping UPOS to XPOS Akuntsú
| UPOS | XPOS |
|---|---|
| ADJ | adj |
| ADV | adv |
| INTJ | intj |
| NOUN | n |
| PROPN | ppn |
| VERB | v, vi, vt |
| ADP | pp |
| AUX | aux |
| CCONJ | cc |
| DET | det |
| NUM | num |
| PART | pcl |
| PRON | pro |
| SCONJ | sc |
| PUNCT | punct |
| SYM | sym |
| X | x |
Morphology
Tags
- Akuntsú is mostly a suffixing language, though its number of affixes and suffixes are relatively small if compared to some other South American languages. Words in this language can be composed as few as single morpheme, or can bear to different affixes. Inflection, derivation and compounding are processes found in the language, and derivation and compounding are productive in word formation.
Features
NOMINAL FEATURE
- Nominal words, NOUN, PROPN and PRON, are not marked for Gender, plural or animacy.
- There are no classifiers.
- The two main values of the Number feature are Sing and Plural.
- The notion of plural is expressed through numerals, particles or through reduplication:
tɨrɨ-tɨrɨ apaɾa
two-two banana
'four (or many) bananas'
ko-am pega ekwa
fishhook-rope bring ITER
'(He) brings many fishing lines'
pi-pi
foot-foot
'feet'
- Akuntsú has postpositions and oblique clitics, including Ablative
Abl
, allativeAll
, dativeDat
, essiveEss
, locativeLoc
, translativeTra
and inessiveIne
. The bound (non-clitic) oblique markers are treated ascase
, while the term “postposition” is reserved only for cases of independent words, not bound forms which come after the word that they are grammatically related to.
| Postpostion | Function | Example |
|---|---|---|
| etʃe | Perlative | konitʃe okɨp etʃe ‘The thorn gets into my leg’ |
| ete | Comitative/Relative | tekwata Buko ete ‘He leaves with Buquá’ |
| pi | Inessive | ojẽ pi õkwa ‘I am washing the interior of my mouth’ |
| Clitics | Function | Example |
|---|---|---|
| (b)õ | Allative/Dative/Instrumental | otʃipap tabɨtõ ka ‘My grandmother went to the garden’ |
| (e)ɾi | Comitative | amekoɾi imaã ‘because of the jaguar, she stores them’ |
| na | Essive/Translative | powpow ikona ‘It will be owl’s food (the bird that they killed) ‘ |
| pe | Locative | tɨeɾo kwiɾope ‘Chicha is at the container’ |
- The relational markers
Rel
indicate contiguityRel=Cont
or non-contiguityRel=NCont
between a head and its dependent. That is, the relational indicates whether the possessed noun is or is not contiguous to its possessor, as exemplified below:
| Rel | Form | Example |
|---|---|---|
| Cont | ∅ | Konibu ø-ajtʃi Aɾamĩɾa ‘Konibú’s wife is Aramira’ |
| NCont | t | apaɾa t-ep tʃopa jẽ ‘This one sees banana’s leaf’ |
- The reflexive/correferential morpheme te is associated with the feature-value
Reflex=Yes
. - The demonstratives can occur as noun specifiers or as predicate complements, which receive the tag DEM with two values:
Deixis=Prox
andDeixis=Dist
.
jẽ kem-kɨ jẽ kem-kɨ=ɾom
DEM.PROX breast-liquid DEM.PROX breast-liquid=NEG
'This one has breast-milk, this one doesn't have breast-milk'
otʃe t-ek no jẽɾom tʃok
1PL.EXCL R-house other DEM.DIST build
'Our other house, they built that one'
-
Nominal Reduplication: it marks pluralilty in nouns, as in pi-pi ‘feetʼ. It can be monosyllabic (involving the first or the second syllable of the stem) or dissyllabic. Reduplication is associated with the feature-value
Redup
. -
Augmentative and diminutive: the diminutive morpheme is -tin
Dim
and the augmentative -atʃoAugm
. These morphemes refer to the size of something or the expansion of an event (if it is big or not).
VERBAL FEATURE
- Verbs tend to combine with categories that denote aspect, modality, and voice.
- The aspectual morphemes include the iterative
Iter
, and habitualHab
. There is also a projective aspect. - Akuntsú has the following voice features VOICE: Middle
Mid
and causativeCau
- Akuntsú has a set of auxiliaries
Aux
that expresses the notion of ‘sitting,’ ‘lying,’ ‘standing,’ ‘walking,’ ‘moving,’ ‘coming’ and ‘going´. The auxiliaries are given in the table below:
| Standing | Sitting | Lying | In movement | Going |
|---|---|---|---|---|
| ãm | jã | toa | tʃe | ka ~ ko |
-
Some verbs occur with the morpheme -ka, which is a transitivizer. This feature (
Trans
) takes the value YES if the when the morpheme is present. Verbs that may or not combine with this morpheme take no overt object or require two obligatory arguments. -
Verbal Reduplication: it assigns aspectual function in verbs, as in ãbi-bi ‘to pull successively.ʼ As in the nouns, it can be monosyllabic (involving the first or the second syllable of the stem) or dissyllabic. Reduplication is associated with the feature-value
Redup
. -
Nominalization: there are two productive nominalizer affixes in this language: -ap
Nomzr=Circ
and i-Nomlzr=Obj
.taptot te=i-ko manioc 3COR=OBJ.NMLZ-ingest ‘Manioc, his own food’
Syntax
- Akuntsú is predominantly head-final.
- Objects tend to precede verbs. The most frequent word order is (S)OV.
- The basic clausal constituents may be described basically as [(PRONOMINAL CLITICS) + NOUNS + (NOMINAL MORPHOLOGY) + (OBJECT) + (VERBAL MORPHOLOGY) + VERB + (VERBAL MORPHOLOGY) + (AUXILIARY)].
-
Clause combining mainly involves coordination, subordination, and complementation. Coordination is done by the simple juxtaposition of clauses; complementation is usually in the form of nominalizations.
- In Akuntsú, the antipassive voice is not morphologically marked directly on the verb, but through the demotion of the object to an oblique position in a given transitive clause. The oblique clitic =pe, described with the feature
Obl
, marks the object when it is occurring outside of the usual syntactic position of the object.
tɨrɨ puru-ru-ru me-me-me ek pagop=pe
two IDEO-RED-RED IDEO-RED-RED house new=OBL
'In two (days) that one goes back and forth and builds [on] a new house'
Treebanks
There is 1 Akuntsu UD treebank:


MNFSynchronization
@interface MNFSynchronization : MNFObject
The MNFSynchronization class encapsulates synchronization data from the server in an object.
A synchronization object should not be directly initialized but rather fetched through the server when performing synchronization.
-
@abstract The sync history identifier of this synchronization.
Declaration
Objective-C
@property (readonly, strong, nonatomic) NSNumber *_Nonnull syncHistoryId;
-
@abstract Whether the synchronization is completed.
Declaration
Objective-C
@property (readonly, strong, nonatomic) NSNumber *_Nonnull isSyncDone;
-
@abstract The starting date of the synchronization session.
Declaration
Objective-C
@property (readonly, strong, nonatomic) NSDate *_Nonnull syncSessionStartTime;
-
@abstract Response information from the financial realm being synchronized to.
Declaration
Objective-C
@property (readonly, strong, nonatomic) NSArray<MNFRealmSyncResponse *> *_Nonnull realmSyncResponses;
-
Starts synchronization of financial data, and waits until synchronization is completed. Returns an error if the synchronization did not complete before the timeout period.
Note
All queries and waits are performed on a background thread until the request either times out or synchronization is completed. The completion block fires on the main thread.
Declaration
Objective-C
+ (nonnull MNFJob *) synchronizeWithTimeout:(nonnull NSNumber *)timeout interval:(nonnull NSNumber *)interval completion:(nullable MNFErrorOnlyCompletionHandler)completion;
Swift
class func synchronize(withTimeout timeout: Any!, interval: Any!, completion: Any!) -> Any!
Parameters
timeout
The number of milliseconds to wait before cancelling the task in the background.
interval
The number of milliseconds to wait between queries of synchronization status.
completion
A completion block returning an error.
Return Value
An MNFJob containing a result or an error.
-
@abstract Starts synchronization of financial data and returns a synchronization object with information on the sync session.
Declaration
Objective-C
+ (nonnull MNFJob *) startSynchronizationWithWaitTime:(nonnull NSNumber *)waitTime completion:(nullable MNFSynchronizationCompletionHandler) completion;
Swift
class func start(withWaitTime waitTime: Any!, completion: Any!) -> Any!
Parameters
waitTime
The number of milliseconds to wait before cancelling the task in the background.
completion
A completion block returning a synchronization object and an error.
Return Value
An MNFJob containing a synchronization object and an error.
-
@abstract Get the synchronization status of this synchronization session and updates the object.
Declaration
Objective-C
- (nonnull MNFJob *)refreshWithCompletion: (nullable MNFErrorOnlyCompletionHandler)completion;
Swift
func refresh(withCompletion completion: Any!) -> Any!
Parameters
completion
A completion block returning an error.
Return Value
An MNFJob containing an error.
-
@abstract Get the current synchronization status for the user.
Declaration
Objective-C
+ (nonnull MNFJob *)fetchCurrentSynchronizationStatusWithCompletion: (nullable MNFSynchronizationCompletionHandler)completion;
Swift
class func fetchCurrentSynchronizationStatus(withCompletion completion: Any!) -> Any!
Parameters
completion
A completion block returning a synchronization object and an error.
Return Value
An MNFJob containing a synchronization object and an error.
-
@abstract Find out whether synchronization is needed
@warning
Declaration
Objective-C
- (BOOL)isSynchronizationNeeded;
Swift
func isSynchronizationNeeded() -> Any!
Return Value
A boolean indicating whether synchronization is needed.


--- layout: post title: doodle date: '2015-10-03T18:30:24+02:00' categories: - Sketches picture_url: https://film-Storyboards.tumblr.com/post/130435302668 ---


AR Prototype for NASA
A few years ago, Retired NASA Astronaut and Distinguished Educator in Residence at Boise State University (BSU) Steve Swanson dropped into our development lab and asked if we wanted a chance to develop a Heads Up Display (HUD) prototype for NASA astronaut helmets. NASA would use this application prototype for Extra-Vehicular Activities (EVAs) on the International Space Station, and eventually on the Orion spacecraft, the Lunar Gateway, and in Mars missions.
Problem Description
Spacewalks on the International Space Station (ISS) are dangerous and expensive, but necessary for upkeep and research. Mechanical failures, time constraints, loosing one's bearings, and life support problems can happen suddenly. Currently, astronauts use laminated instructions attached to their wrist and radio communication with Mission Control to supplement their training while navigating to a work site, building, doing repairs, and performing experiments. Because of this, valuable time can be wasted when things go wrong, or visual communication isn’t possible. The EMU (Extravehicular Mobility Unit) or spacesuit, astronauts wear were instituted in 1981, and were enhances for safety in 1998. Currently, there are a total of 11 EMU’s in working order.
ARSIS 1.0, built on Microsoft HoloLens using C# Unity, is our response to the NASA SUITS challenge. Our goals in creating ARSIS 1.0 were:
1. Improve safety
2. Increase crew member autonomy
3. Expand effective communication between Mission Control and the crew members
The Team
An all student team from Boise State University mentored by a Retired NASA Astronaut, a passionate engineer, and a HCI (Human Computer Interaction) doctorate.
My Role
Lead UX/UI Design Team
Collaborate with and teach 2 Junior Designers
Work with 6 Developers, 2 NASA Mentors, 1 HCI Mentor, 2 Project Managers (based at Johnson Space Center (JSC) in Houston, TX), and 3 Project Interns (JSC)
Take project from brainstorm to handoff
ARSIS 1.0 on a Timeline
Meet with Mentors
Assess challenges
Create plan
Create Interface
Iterate
Create Testing Plan
Testing at BSU
Testing at JSC
Wrap project, and hand off to NASA SUITS at JSC
The Chance of a Lifetime
Regular video meetings with the folks at JSC and other teams around the country began, and we brainstormed the starting point of the project. As this was something that had not previously been prototyped, our team interfaced with our mentor, Steve, the NASA SUITS Educational Team at JSC, and the UX/UI and development teams to collaborate on the unique and complex design problem. Designing and implementing something so new it hadn't ever been done before was indeed a challenge.
Initial 3D 'Sketches'
After a lot of consideration and research I put together 3D interface prototypes, and a GUI. We decided to use a 3D modeled interface, and based it off of the look and feel of mathematics calculators and large-buttoned tablets, to give users of our target demographic (NASA Astronauts who’s average age ranged between 35 and 65 years old) a reference of what how to interact with the interface. Tools for prototyping included pencil and paper, Adobe Photoshop, and Blender. Once that was finished, I used Blender and Adobe Photoshop to create the models, UV unwrap them, and create textures for each component.
The Interface: Iteration 2
The Interface: Final Iteration
The Testing Process
I worked with both teams and our mentors to incorporate the interface and code together, and then worked with a software engineer and the astrophysics consultant to write a user test plan. The test plan included moderated usability testing, surveys, and A/B testing. Beta testing was conducted at Boise State University's annual Bronco Days recruiting event. Volunteer participants within our target demographics (as well as test subjects outside our scope) played through a testing simulation we created to test all aspects of the interface and software.
After that, a specially chosen group from the BSU NASA SUITS Team spent a week at Johnson Space Center in Houston doing further testing, development, and demonstrations under the direction of the NASA SUITS Educational leadership. This testing was conducted primarily at the Human-In-The-Loop testing facility at the HIVE (Human Integrated Vehicles & Environments) Wearables Lab, on NASA JSC campus. The experience was absolutely invaluable, as I got to interact with and see the work of NASA engineers, meet astronauts and cosmonauts, and learn from the amazing people who work at NASA JSC.
Solutions: ADELE, the Voice Interface
ARSIS uses a voice interface (like Siri or Cortana) we named ‘ADELE' (Audio Device for Extraterrestrial Listening Environments); an homage to Adele Goldstien, one of the original ENIAC programmers. ADELE allows users to with ARSIS without having to use their hands, thus freeing them up for work. This is especially important for astronauts on EVA, because the bulky spacesuit gloves they wear don’t allow for fine motor movements required to manually interact with the AR interface.
Solutions: Voice Commands bring up Selected Menu
Solutions: Work Flow
For further information on ARSIS 1.0 please watch the video, below.


It is possible to determine, at run time, what classes are defined, how they are related by inheritance, what class an object belongs to, etc. This section describes the predicates used for those purposes. Most of the predicates involve the class hierarchy, so they are properly described in the section on inheritance. But, several can be useful even in programs that use only simple classes.
Most of these predicates come in pairs, where one predicate involves
one class or its direct superclasses, and the other predicate involves
all ancestors. For example, the class_superclass/2
and
class_ancestor/2
predicates connect a currently defined class to
its superclass(es) and to all its ancestors, respectively.
In all of these predicates, the ancestors of a class include not only superclasses and their ancestors, but also the class itself. A class cannot be a superclass of itself, by the rules of defining classes. However, it is convenient to consider every class an ancestor of itself, because then we may say that every property of a class is defined in one of its ancestors, without having to say “the class itself or a superclass or a superclass of a superclass, etc.”
The class_of/2
predicate is used to test whether an object is of a
particular type or to determine the type of an object. Similarly, the
descendant_of/2
predicate relates an object to all ancestors of its
class. (Remember that the object's class is, itself, an ancestor class
of the object.)
Both require the first argument (the object) to be instantiated. That is, the predicates cannot be used to find objects of a given class. If you need to search among all the objects of a class, you must provide a way to do it. One way to do this is to assert a fact connecting the class name to every object, when it is created. The named_point example of the previous section took that idea a step further by allowing each object to have a different name.
The pointer_object/2
predicate relates an object's address (a pointer)
to the object. Remember that an instance of Class is represented by a
term of the form
Class(Address)
The pointer_object/2
predicate requires that one of its arguments be
instantiated, but it may be either one. Hence, just by knowing the
address of an object (which possibly was returned by a foreign
function) it is possible to determine the object's type.
Most Prolog programmers can safely ignore the pointer_object/2
predicate, unless they are using SICStus Objects with foreign
functions or with the Structs package.
The current_class/1
predicate is used to ask whether a class is
currently defined or to get the names of all currently defined
classes.
The class_superclass/2
predicate is used to test whether one class
is a superclass of another, or to find a class's superclasses, or to
find a class's subclasses, or to find all subclass-superclass pairs.
The class_ancestor/2
predicate is used in the same ways for the
ancestor relation between currently defined classes.
As an example, the following goal finds all the ancestors of each currently defined class.
| ?- setof(C-As, (current_class(C), setof(A, class_ancestor(C,A), As)), L).
It binds L
to a list of terms of the form
Class-AncestorList, with one term for each currently defined
class.
Arguably, this predicate violates the principle of information hiding, by letting you ask about how a class is defined. Therefore, you should generally avoid it. It may be useful, however, in debugging and in building programmer support tools.
The message/4
predicate is used to ask whether a message is
defined for a class or to find what messages are defined for a class,
etc. It does not distinguish between messages whose methods are
defined in the class itself and those that are inherited from a
superclass.
The direct_message/4
predicate is used to ask whether a message is
not only defined for a class, but whether the method for that message
is defined in the class itself. It can also be used to determine
which methods are defined in a class. This ability to look inside a
class definition makes direct_message/4
an egregious violator of
the principle of information hiding. Thus it, like
class_ancestor/2
, should mainly be confined to use in programmer
support applications.
Both message/4
and direct_message/4
take the message operator
as an argument, along with the class, message name and arity. Hence it
is possible to use these predicates to ask about get, put or send
messages.
It is not possible to ask about a class's slots, nor should it be. However, it is possible (and quite reasonable) to ask about the get and put messages that are defined for a class. For example, the following goal finds all the 1-argument messages that are defined for both the get and put message operators in the class Class.
| ?- setof(Message, (message(Class, <<, Msg, 1), message(Class, >>, Msg, 1)), L).
There may or may not be slots corresponding to these messages; that detail is hidden in the definition of Class. However, it should be possible to use Class as if the slots were there.
As an example, recall the polar coordinate interface to the point
class, which defined get and put methods for r
and theta
, even
though data was represented inside an object by rectangular
coordinates x
and y
.


--- layout: page title: "About" description: "Me." header-img: "img/about-bg.jpg" ---
* I received the bachelor’s degree from Shenzhen University in 2017.
* Currently working towards the Meter Degree in School of Computer Science and Engineering, South China University of Technology, Guangzhou.


This has been tested in chrome
Open the console and try the following
Object._info.info()
Object._info.lib.info()
Array._info()
a = [] a.push._info() a.push(1,2,3)


In the last 7 days, your average sleep was
In the last 7 days, your average step count was
In the last 7 days, your average calorie intake was
In the last 6 months, you didn't usually sleep less than
In the last 6 months, you didn't usually have a lower step count than
In the last 6 months, you didn't usually have a lower calorie intake than
In the last 6 months, you didn't usually sleep more than
In the last 6 months, you didn't usually have a higher step count than
In the last 6 months, you didn't usually have a higher calorie intake than


Cradle Will Rock Review
Cradle Will Rock is the latest effort from director/actor Tim Robbins. While he may have had an Oscar worthy film back in 1995 (Dead Man Walking), he gets a little overconfident and sloppy here. The story is confusing, and filled with many subplots, so I'll try my best and explain it as simply as possible. The film is based on a "mostly" true story about a Federal theater in the 1930s, that produced a play (The Cradle Will Rock) that apparently was offensive to some, so the government shuts it down. It's during the time of the depression, and all this theater wants to do is entertain and cheer up those who do not have jobs, or are poor. Between this conflict lies what seems like 10 subplots, about those who work in theater, or those associated. Also along the way are some other messages mashed together to create an even more overwhelming experience. Tim Robbin's just keeps piling on political views, and characters, that we just give up on the film, or in some cases walk out. For Robbin's it may be a nice achievement, but to me it seemed more like a friendly get together with slightly more sophisticated dialogue, and fancy outfits. I thought the main reason for seeing the film would be for the outstanding cast, unfortunately are all uninteresting, except for a few. Let me recap what each important character does, so please bear with me (it's the least you can do, especially if you were considering seeing this). I'll begin with those involved with the play. There's Orson Welles (Angus Macfadyen) who of course is the director of the play, the producer John Houseman (Cary Elwes), Marc Blitzstein (Hank Azaria) the writer of the play, Emily Watson, a woman who gets her break by playing the main part in Cradle Will Rock.  There's a few other actresses and actors who have their own stories (Susan Sarandon, Philip Baker Hall too name a few) but those that I mentioned, were the most significant to the story. Anyway, most of these talented Hollywood stars were completely wasted, except for Emily Watson, who does another great job, and one of my personal favorite actors John Cusack, who always delivers through thick and thin. Now although most of the film was weak to say the least, there were some nice moments and some involving subjects, but all this is overblown. Sure the free speech segment was a nice feature, but not when it becomes repetitive. The whole film is like this, and it's basically nothing but a headache. On the brighter side, Tim Robbin's direction was masterful. His camera direction seemed reminiscent to the works of Paul Thomas Anderson's latest Magnolia, only smoother In my opinion, but even that can't make a movie that much better. Although it has it's moments (not many of them, but they're there), Cradle Will Rock stays true to it's title, because the cradle rocked too far and tipped over.
Grade: C-
www.chud.com http://jump.to/moviepage www.pictureshow.8m.com
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


Data Masking is a simple tool to mask/unmask (performing XOR operation) modules of your current work according to the specified mask pattern. It can be used when you want to analyze QR code that not masked normally or when the QR code is already unmasked.
Selecting this tool will open new dialog and you should select mask pattern from 0 to 7 that you want mask/unmask on your current work.


SSH access for root must be enabled on the source machine. Upload a key to the users home folder
and unlock the key here.
RSync has to be installed on the source machine.
Externally visible TCP ports
Ports already in use:
Application name
Application names already in use:
Exclude paths
The application will be put into a container and run on this machine.


#include "touch.h"
Functions | |
| uint8_t | touch_is_pressed () |
| This functions set 5V to X1 and GND to Y1, the voltage at X2 is measured via the ADC. | |
| int16_t | touch_readX () |
| int16_t | touch_readY () |
| uint8_t touch_is_pressed | ( | void | ) |
This functions set 5V to X1 and GND to Y1, the voltage at X2 is measured via the ADC.
If the ADC-Value is less then TOUCH_PRESSED_LEVEL, the function will return 1.
| int16_t touch_readX | ( | void | ) |
| int16_t touch_readY | ( | void | ) |


Everything started when Zebulon discovered that he had a doppelg�nger who was a serious baseball aficionado .


title
category
author
publication time
feature
notify
blurb (notification body)
notification time
upload images
image/YouTube URL
images and videos
body (article text)
AHS App Content Editing System
•••
Designed and programmed by Xing Liu
email
password
location title
category title
color


Getting started: 1-2-3
The main components of Butler are outlined in the system diagram above.
Remember!
Individual parts of Butler can be enabled/disabled in the main config file.
If you’re unsure what each REST API endpoint does, the API docs is the place to check.
1. Installation
Follow the installation instructions - they will guide through the setup process, including requirements and customisation.
2. Setup
Once everything is installed you need to edit the configuration file to suit your specific needs.
3. Try it out!
Feel free to browse through the concepts and examples to get an understanding of how to use Butler.


deploy.rb |
|
|---|---|
require 'recap/capistrano_extensions'
require 'recap/bundler'
require 'recap/preflight'
Capistrano::Configuration.instance(:must_exist).load do
extend Recap::CapistranoExtensions |
|
|
To use this recipe, both the application’s name and its git repository are required. |
set(:application) { abort "You must set the name of your application in your Capfile, e.g.: set :application, 'tomafro.net'" }
set(:repository) { abort "You must set the git respository location in your Capfile, e.g.: set :respository<EMAIL_ADDRESS>|
|
The recipe assumes that the application code will be run as a dedicated user. Any any user who can deploy the application should be added as a member of the application’s group. By default, both the application user and group take the same name as the application. |
set(:application_user) { application }
set(:application_group) { application_user } |
|
Deployments can be made from any branch. |
set(:branch, 'master') |
|
Unlike a standard capistrano deployment, all releases are stored directly in the |
set(:deploy_to) { "/home/#{application_user}/apps/#{application}" } |
|
Each release is marked by a unique tag, generated with the current timestamp. While this can be changed, it’s not recommended, as the sort order of the tag names is important; later tags must be listed after earlier tags. |
set(:release_tag) { "#{Time.now.utc.strftime("%Y%m%d%H%M%S")}"} |
|
On tagging a release, a message is also recorded alongside the tag. This message can contain anything useful – its contents are not important for the recipe. |
set(:release_message, "Deployed at #{Time.now}") |
|
Some tasks need to know the |
set(:latest_tag) { latest_tag_from_repository } |
|
To authenticate with github or other git servers, it is easier (and cleaner) to forward the deploying user’s ssh key than manage keys on deployment servers. |
ssh_options[:forward_agent] = true |
|
If key forwarding isn’t possible, git may show a password prompt which stalls capistrano unless
|
default_run_options[:pty] = true
namespace :deploy do |
|
The |
desc "Prepare servers for deployment"
task :setup, :except => {:no_release => true} do
transaction do
clone_code
end
end |
|
Clone the repository into the deployment directory. |
task :clone_code, :except => {:no_release => true} do |
|
This is a slightly complicated process, as git doesn’t allow us to clone into an existing
directory. To get around this, using |
sudo "mkdir -p #{File.expand_path(deploy_to + "/..")}" |
|
Next, clone our code into a temporary location. This is necessary as our user might not have permission to write in the base deployment folder. |
run "git clone #{repository} $HOME/#{application}.tmp" |
|
Again using |
sudo "mv $HOME/#{application}.tmp #{deploy_to}" |
|
Finally ensure that members of the |
top.deploy.change_ownership
end |
|
Any files that have been created or updated by our user need to have thier permissions changed to
ensure they can be read and written by and member of the |
task :change_ownership, :except => {:no_release => true} do
run "find #{deploy_to} -user `whoami` ! -group #{application_group} -exec chown :#{application_group} {} \\;"
run "find #{deploy_to} -user `whoami` -exec chmod g+rw {} \\;"
end |
|
The main deployment task (called with |
desc "Deploy the latest application code"
task :default do
transaction do
update_code
tag
end
restart
end |
|
Fetch the latest changes, then update |
task :update_code, :except => {:no_release => true} do
on_rollback { git "reset --hard #{latest_tag}" if latest_tag }
git "fetch"
git "reset --hard origin/#{branch}" |
|
Finally ensure that the members of the |
top.deploy.change_ownership
end |
|
Tag |
task :tag, :except => {:no_release => true} do
on_rollback { git "tag -d #{release_tag}" }
git "tag #{release_tag} -m '#{release_message}'"
top.deploy.change_ownership
end |
|
After a successful deployment, the app is restarted. In the most basic deployments this does nothing, but other recipes may override it, or attach tasks it’s before or after hooks. |
desc "Restart the application following a deploy"
task :restart do
end |
|
To rollback a release, the latest tag is deleted, and |
desc "Rollback to the previous release"
namespace :rollback do
task :default do
if latest_tag
git "tag -d #{latest_tag}"
if previous_tag = latest_tag_from_repository
git "reset --hard #{previous_tag}"
end
end
restart
end
end |
|
In case of emergency or when manually testing deployment, it can be useful to remove all previously deployed files before starting again. |
desc "Remove all deployed files"
task :destroy do
sudo "rm -rf #{deploy_to}"
end
end
end |


6.3.4. OnDoubleSubmission Interceptor¶
Table of contents
Interceptor that performs double submission (same request sent twice) check.
To use this interceptor, Token configuration using form tag in jsp or Token configuration using UseToken interceptor are necessary.
<IP_ADDRESS>. Module list¶
<dependency>
<groupId>com.nablarch.framework</groupId>
<artifactId>nablarch-fw-web-tag</artifactId>
</dependency>
<IP_ADDRESS>. Using OnDoubleSubmission¶
Configure the OnDoubleSubmission annotation for the action method.
// Specify the transition destination in the path attribute when it is determined as double submission.
@OnDoubleSubmission(path = "/WEB-INF/view/error/userError.jsp")
public HttpResponse register(HttpRequest req, ExecutionContext ctx) {
// Omitted.
}
<IP_ADDRESS>. Specify the default value of OnDoubleSubmission¶
To configure the default value of the OnDoubleSubmission annotation that is used throughout the application,
add BasicDoubleSubmissionHandler to the component definition with the name doubleSubmissionHandler
.
If the annotation attribute is not specified in BasicDoubleSubmissionHandler, then the resource path, message ID and status code configured in the own property are used.
- Configuration example
<component name="doubleSubmissionHandler" class="nablarch.common.web.token.BasicDoubleSubmissionHandler"> <!-- Resource path of the transition destination when double submission is determined --> <property name="path" value="/WEB-INF/view/error/userError.jsp" /> <!-- Message ID used for the error message displayed on the transition destination screen when double submission is determined --> <property name="messageId" value="DOUBLE_SUBMISSION_ERROR" /> <!-- Response status when double submission is determined.Default is 400 --> <property name="statusCode" value="200" /> </component>
Important
If both OnDoubleSubmission and BasicDoubleSubmissionHandler do not specify the path, a system error occurs because the transition destination is not known when a double submission is determined.
One of the paths must be specified in the application that uses Prevention of double submission using token.
<IP_ADDRESS>. Change the behavior of OnDoubleSubmission¶
The behavior of the OnDoubleSubmission annotation can be changed by implementing the interface DoubleSubmissionHandler.
Add the implemented class to the component definition with the name doubleSubmissionHandler
.


#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
import sys
from pyspark import since, SparkContext
from pyspark.ml.common import _java2py, _py2java
from pyspark.ml.wrapper import JavaWrapper, _jvm
from pyspark.sql.column import Column, _to_seq
from pyspark.sql.functions import lit
[docs]class ChiSquareTest(object):
"""
.. note:: Experimental
Conduct Pearson's independence test for every feature against the label. For each feature,
the (feature, label) pairs are converted into a contingency matrix for which the Chi-squared
statistic is computed. All label and feature values must be categorical.
The null hypothesis is that the occurrence of the outcomes is statistically independent.
.. versionadded:: 2.2.0
"""
[docs] @staticmethod
@since("2.2.0")
def test(dataset, featuresCol, labelCol):
"""
Perform a Pearson's independence test using dataset.
:param dataset:
DataFrame of categorical labels and categorical features.
Real-valued features will be treated as categorical for each distinct value.
:param featuresCol:
Name of features column in dataset, of type `Vector` (`VectorUDT`).
:param labelCol:
Name of label column in dataset, of any numerical type.
:return:
DataFrame containing the test result for every feature against the label.
This DataFrame will contain a single Row with the following fields:
- `pValues: Vector`
- `degreesOfFreedom: Array[Int]`
- `statistics: Vector`
Each of these fields has one value per feature.
>>> from pyspark.ml.linalg import Vectors
>>> from pyspark.ml.stat import ChiSquareTest
>>> dataset = [[0, Vectors.dense([0, 0, 1])],
... [0, Vectors.dense([1, 0, 1])],
... [1, Vectors.dense([2, 1, 1])],
... [1, Vectors.dense([3, 1, 1])]]
>>> dataset = spark.createDataFrame(dataset, ["label", "features"])
>>> chiSqResult = ChiSquareTest.test(dataset, 'features', 'label')
>>> chiSqResult.select("degreesOfFreedom").collect()[0]
Row(degreesOfFreedom=[3, 1, 0])
"""
sc = SparkContext._active_spark_context
javaTestObj = _jvm().org.apache.spark.ml.stat.ChiSquareTest
args = [_py2java(sc, arg) for arg in (dataset, featuresCol, labelCol)]
return _java2py(sc, javaTestObj.test(*args))
[docs]class Correlation(object):
"""
.. note:: Experimental
Compute the correlation matrix for the input dataset of Vectors using the specified method.
Methods currently supported: `pearson` (default), `spearman`.
.. note:: For Spearman, a rank correlation, we need to create an RDD[Double] for each column
and sort it in order to retrieve the ranks and then join the columns back into an RDD[Vector],
which is fairly costly. Cache the input Dataset before calling corr with `method = 'spearman'`
to avoid recomputing the common lineage.
.. versionadded:: 2.2.0
"""
[docs] @staticmethod
@since("2.2.0")
def corr(dataset, column, method="pearson"):
"""
Compute the correlation matrix with specified method using dataset.
:param dataset:
A Dataset or a DataFrame.
:param column:
The name of the column of vectors for which the correlation coefficient needs
to be computed. This must be a column of the dataset, and it must contain
Vector objects.
:param method:
String specifying the method to use for computing correlation.
Supported: `pearson` (default), `spearman`.
:return:
A DataFrame that contains the correlation matrix of the column of vectors. This
DataFrame contains a single row and a single column of name
'$METHODNAME($COLUMN)'.
>>> from pyspark.ml.linalg import Vectors
>>> from pyspark.ml.stat import Correlation
>>> dataset = [[Vectors.dense([1, 0, 0, -2])],
... [Vectors.dense([4, 5, 0, 3])],
... [Vectors.dense([6, 7, 0, 8])],
... [Vectors.dense([9, 0, 0, 1])]]
>>> dataset = spark.createDataFrame(dataset, ['features'])
>>> pearsonCorr = Correlation.corr(dataset, 'features', 'pearson').collect()[0][0]
>>> print(str(pearsonCorr).replace('nan', 'NaN'))
DenseMatrix([[ 1. , 0.0556..., NaN, 0.4004...],
[ 0.0556..., 1. , NaN, 0.9135...],
[ NaN, NaN, 1. , NaN],
[ 0.4004..., 0.9135..., NaN, 1. ]])
>>> spearmanCorr = Correlation.corr(dataset, 'features', method='spearman').collect()[0][0]
>>> print(str(spearmanCorr).replace('nan', 'NaN'))
DenseMatrix([[ 1. , 0.1054..., NaN, 0.4 ],
[ 0.1054..., 1. , NaN, 0.9486... ],
[ NaN, NaN, 1. , NaN],
[ 0.4 , 0.9486... , NaN, 1. ]])
"""
sc = SparkContext._active_spark_context
javaCorrObj = _jvm().org.apache.spark.ml.stat.Correlation
args = [_py2java(sc, arg) for arg in (dataset, column, method)]
return _java2py(sc, javaCorrObj.corr(*args))
[docs]class KolmogorovSmirnovTest(object):
"""
.. note:: Experimental
Conduct the two-sided Kolmogorov Smirnov (KS) test for data sampled from a continuous
distribution.
By comparing the largest difference between the empirical cumulative
distribution of the sample data and the theoretical distribution we can provide a test for the
the null hypothesis that the sample data comes from that theoretical distribution.
.. versionadded:: 2.4.0
"""
[docs] @staticmethod
@since("2.4.0")
def test(dataset, sampleCol, distName, *params):
"""
Conduct a one-sample, two-sided Kolmogorov-Smirnov test for probability distribution
equality. Currently supports the normal distribution, taking as parameters the mean and
standard deviation.
:param dataset:
a Dataset or a DataFrame containing the sample of data to test.
:param sampleCol:
Name of sample column in dataset, of any numerical type.
:param distName:
a `string` name for a theoretical distribution, currently only support "norm".
:param params:
a list of `Double` values specifying the parameters to be used for the theoretical
distribution. For "norm" distribution, the parameters includes mean and variance.
:return:
A DataFrame that contains the Kolmogorov-Smirnov test result for the input sampled data.
This DataFrame will contain a single Row with the following fields:
- `pValue: Double`
- `statistic: Double`
>>> from pyspark.ml.stat import KolmogorovSmirnovTest
>>> dataset = [[-1.0], [0.0], [1.0]]
>>> dataset = spark.createDataFrame(dataset, ['sample'])
>>> ksResult = KolmogorovSmirnovTest.test(dataset, 'sample', 'norm', 0.0, 1.0).first()
>>> round(ksResult.pValue, 3)
1.0
>>> round(ksResult.statistic, 3)
0.175
>>> dataset = [[2.0], [3.0], [4.0]]
>>> dataset = spark.createDataFrame(dataset, ['sample'])
>>> ksResult = KolmogorovSmirnovTest.test(dataset, 'sample', 'norm', 3.0, 1.0).first()
>>> round(ksResult.pValue, 3)
1.0
>>> round(ksResult.statistic, 3)
0.175
"""
sc = SparkContext._active_spark_context
javaTestObj = _jvm().org.apache.spark.ml.stat.KolmogorovSmirnovTest
dataset = _py2java(sc, dataset)
params = [float(param) for param in params]
return _java2py(sc, javaTestObj.test(dataset, sampleCol, distName,
_jvm().PythonUtils.toSeq(params)))
[docs]class Summarizer(object):
"""
.. note:: Experimental
Tools for vectorized statistics on MLlib Vectors.
The methods in this package provide various statistics for Vectors contained inside DataFrames.
This class lets users pick the statistics they would like to extract for a given column.
>>> from pyspark.ml.stat import Summarizer
>>> from pyspark.sql import Row
>>> from pyspark.ml.linalg import Vectors
>>> summarizer = Summarizer.metrics("mean", "count")
>>> df = sc.parallelize([Row(weight=1.0, features=Vectors.dense(1.0, 1.0, 1.0)),
... Row(weight=0.0, features=Vectors.dense(1.0, 2.0, 3.0))]).toDF()
>>> df.select(summarizer.summary(df.features, df.weight)).show(truncate=False)
+-----------------------------------+
|aggregate_metrics(features, weight)|
+-----------------------------------+
|[[1.0,1.0,1.0], 1] |
+-----------------------------------+
<BLANKLINE>
>>> df.select(summarizer.summary(df.features)).show(truncate=False)
+--------------------------------+
|aggregate_metrics(features, 1.0)|
+--------------------------------+
|[[1.0,1.5,2.0], 2] |
+--------------------------------+
<BLANKLINE>
>>> df.select(Summarizer.mean(df.features, df.weight)).show(truncate=False)
+--------------+
|mean(features)|
+--------------+
|[1.0,1.0,1.0] |
+--------------+
<BLANKLINE>
>>> df.select(Summarizer.mean(df.features)).show(truncate=False)
+--------------+
|mean(features)|
+--------------+
|[1.0,1.5,2.0] |
+--------------+
<BLANKLINE>
.. versionadded:: 2.4.0
"""
[docs] @staticmethod
@since("2.4.0")
def mean(col, weightCol=None):
"""
return a column of mean summary
"""
return Summarizer._get_single_metric(col, weightCol, "mean")
[docs] @staticmethod
@since("2.4.0")
def variance(col, weightCol=None):
"""
return a column of variance summary
"""
return Summarizer._get_single_metric(col, weightCol, "variance")
[docs] @staticmethod
@since("2.4.0")
def count(col, weightCol=None):
"""
return a column of count summary
"""
return Summarizer._get_single_metric(col, weightCol, "count")
[docs] @staticmethod
@since("2.4.0")
def numNonZeros(col, weightCol=None):
"""
return a column of numNonZero summary
"""
return Summarizer._get_single_metric(col, weightCol, "numNonZeros")
[docs] @staticmethod
@since("2.4.0")
def max(col, weightCol=None):
"""
return a column of max summary
"""
return Summarizer._get_single_metric(col, weightCol, "max")
[docs] @staticmethod
@since("2.4.0")
def min(col, weightCol=None):
"""
return a column of min summary
"""
return Summarizer._get_single_metric(col, weightCol, "min")
[docs] @staticmethod
@since("2.4.0")
def normL1(col, weightCol=None):
"""
return a column of normL1 summary
"""
return Summarizer._get_single_metric(col, weightCol, "normL1")
[docs] @staticmethod
@since("2.4.0")
def normL2(col, weightCol=None):
"""
return a column of normL2 summary
"""
return Summarizer._get_single_metric(col, weightCol, "normL2")
@staticmethod
def _check_param(featuresCol, weightCol):
if weightCol is None:
weightCol = lit(1.0)
if not isinstance(featuresCol, Column) or not isinstance(weightCol, Column):
raise TypeError("featureCol and weightCol should be a Column")
return featuresCol, weightCol
@staticmethod
def _get_single_metric(col, weightCol, metric):
col, weightCol = Summarizer._check_param(col, weightCol)
return Column(JavaWrapper._new_java_obj("org.apache.spark.ml.stat.Summarizer." + metric,
col._jc, weightCol._jc))
[docs] @staticmethod
@since("2.4.0")
def metrics(*metrics):
"""
Given a list of metrics, provides a builder that it turns computes metrics from a column.
See the documentation of [[Summarizer]] for an example.
The following metrics are accepted (case sensitive):
- mean: a vector that contains the coefficient-wise mean.
- variance: a vector tha contains the coefficient-wise variance.
- count: the count of all vectors seen.
- numNonzeros: a vector with the number of non-zeros for each coefficients
- max: the maximum for each coefficient.
- min: the minimum for each coefficient.
- normL2: the Euclidean norm for each coefficient.
- normL1: the L1 norm of each coefficient (sum of the absolute values).
:param metrics:
metrics that can be provided.
:return:
an object of :py:class:`pyspark.ml.stat.SummaryBuilder`
Note: Currently, the performance of this interface is about 2x~3x slower then using the RDD
interface.
"""
sc = SparkContext._active_spark_context
js = JavaWrapper._new_java_obj("org.apache.spark.ml.stat.Summarizer.metrics",
_to_seq(sc, metrics))
return SummaryBuilder(js)
[docs]class SummaryBuilder(JavaWrapper):
"""
.. note:: Experimental
A builder object that provides summary statistics about a given column.
Users should not directly create such builders, but instead use one of the methods in
:py:class:`pyspark.ml.stat.Summarizer`
.. versionadded:: 2.4.0
"""
def __init__(self, jSummaryBuilder):
super(SummaryBuilder, self).__init__(jSummaryBuilder)
[docs] @since("2.4.0")
def summary(self, featuresCol, weightCol=None):
"""
Returns an aggregate object that contains the summary of the column with the requested
metrics.
:param featuresCol:
a column that contains features Vector object.
:param weightCol:
a column that contains weight value. Default weight is 1.0.
:return:
an aggregate column that contains the statistics. The exact content of this
structure is determined during the creation of the builder.
"""
featuresCol, weightCol = Summarizer._check_param(featuresCol, weightCol)
return Column(self._java_obj.summary(featuresCol._jc, weightCol._jc))
if __name__ == "__main__":
import doctest
import numpy
import pyspark.ml.stat
from pyspark.sql import SparkSession
try:
# Numpy 1.14+ changed it's string format.
numpy.set_printoptions(legacy='1.13')
except TypeError:
pass
globs = pyspark.ml.stat.__dict__.copy()
# The small batch size here ensures that we see multiple batches,
# even in these small test examples:
spark = SparkSession.builder \
.master("local[2]") \
.appName("ml.stat tests") \
.getOrCreate()
sc = spark.sparkContext
globs['sc'] = sc
globs['spark'] = spark
failure_count, test_count = doctest.testmod(globs=globs, optionflags=doctest.ELLIPSIS)
spark.stop()
if failure_count:
sys.exit(-1)


To get some understanding about why it's not robust to rely on window.innerWidth property, take a look at this page
Lets configure deviceObserver with a few devices and its width and start observing when it is changed. Try to resize the window end check the logs below.
By default deviceObserver assumes that you use mobile-first approach. If that is not the case you can pass mobileFirst: false in the options to set your breakpoints strategy to desktop-first


l
Language Preferences
STUDENTS TRANSFER
Language Preferences
Capacity Allocation
Section Creation
Student to Section mapping
STUDENTS TRANSFER
Role To Grade Mapping
EMPLOYEE TO SUBJECT MAPPING
Employee To Grade Section Mapping
Working Days
Chapter creation
Book Apruval Date
class teacher book chapter
Capter Rejection
Employee
EMPLOYEE TO SUBJECT MAPPING
Employee To Grade Section Mapping
Role To Grade Mapping
Grade To Subject Mapping
Capacity Allocation
Section Creation
Student to Section mapping
Working Days
School Creation
School Type
Category
Grade
Role
Subjects
School to School Type
School type to Grade
Section Periods
Employee
EMPLOYEE TO SUBJECT MAPPING
Capacity Allocation
Section Creation
Employee To Grade Section Mapping
Grade To Subject Mapping
Language Preferences
STUDENTS TRANSFER
Student to Section mapping
Working Days
Role To Grade Mapping
Employee Report
Student To Section Report


Preparation time
less than 30 mins
Cooking time
10 to 30 mins
Serves
Makes 16-20
Dietary
Preheat the oven to 170C/325F/Gas 3.
In a bowl, rub together the butter, sugar, vanilla seeds and flour, using your fingertips.
Bring the mixture together to form a dough, turn out onto a lightly floured work surface and knead until the dough is smooth. Roll into a ball, then wrap the dough in cling film and chill in the fridge for at least 15 minutes.
When the dough has chilled, roll it out onto a lightly floured work surface until it is about 6mm thick.
Cut 7.5cm/3in discs from the dough using a cookie cutter or upturned mug.
Divide the pastry discs into two portions. Cut a small 1.5cm/1¾in heart shape from each disc in the first portion using a shaped cookie cutter or sharp knife. Leave the remaining pastry discs whole.
Lightly grease a baking tray and place all of the discs onto it. Bake in the oven for 12-15 minutes, or until crisp and pale golden-brown. Remove from the oven and place onto a wire rack. Set aside to cool.
When the biscuits have cooled, place one teaspoonful of clotted cream onto each of the whole biscuits. Spoon a small dollop of jam on top of the cream. Place the biscuits with the heart-shaped holes on top and gently squeeze together.


Type a new name for the document, but do not press enter. Notice that the edit box has changed to show your new document name. But if you press Enter, it will be saved in your Documents folder.


rotten
>
Library
>
Biographies
> Sports Figures
Joanie Laurer
Andre the Giant
Jesse Ventura
Stone Cold Steve Austin
Dale Earnhardt
Howard Cosell
Kobe Bryant
Vince McMahon
Tonya Harding
Charles Barkley
Marv Albert
Darryl Strawberry
Dennis Rodman
Don King
Mike Tyson
O.J. Simpson
Pornopolis
|
Rotten
|
Faces of Death
|
Famous Nudes


WARNING: Key derivation is not working on this device/wallet. Actions cannot be performed on this wallet.
Proposals
Unsent transactions
No transactions yet
Could not update transaction history
Updating transaction history. Please stand by.
{{updatingTxHistoryProgress}} transactions downloaded


I was looking this unassuming post from a while back, and thinking about callbacks from this comment, and I started getting that annoyed feeling about REST and HTTP verbs, but I wasn't sure why. Now I think I know why: the way HTTP verbs are being suggested they are a poor substitute for callbacks, and callbacks are easily attainable right now if we just pay attention to them.
To summarize the verb argument (as I understand it): using different verbs on the same resource allows you to make a cohesive set of actions that work on a well-defined entity, and the entity is represented by the resource URL. Because the HTTP verb is orthogonal to the resource URL, you keep object and verb very separate.
What do the verbs mean? This is communicated via some other channel, probably documentation. It is not always self-evident. DELETE means delete?  If you don't have a dumb container, DELETE probably means more than just delete -- it has side effects outside of the resource in isolation.
I was reminded of this again with Mark Nottingham's post about links, which is this idea of callbacks again, about defining explicit relationships instead of implying. He extends it with link templates, like http://www.example.com/home/{userid}, which can represent some more complex relationships. One of the nice parts about something like this is that http://www.example.com/userhome.php?userid={userid} works just as well in this scheme. That is, it works for the systems we have now, not just the systems we want to create in the future.
The problem with depending on "RESTful" URLs, verbs, and other contracts is that it isn't the web we have now. And it's definitely not a simpler web, because the web we have now isn't going away. There are complaints such that userhome.php?userid={userid} isn't likely to be a stable URL. Well, creating a new URL scheme for the site certainly isn't the way to solve that!
Good designs have to deal with what we have, not just with what we wish we had. You have to embrace the problems, recognizing them as part of the success. The W3C's pursuit of XHTML over enhancing HTML is one such example, and we've all spent a whole lot of time accomplishing nothing as a result. Much of REST is great because it embraces what we already have, because it describes the systems that already work well. But some of what goes under the REST flag does not fit this. The systems we have now do GET and POST really well; everything else is spotty. If we need more than GET and POST, then that has to be resolved. But I don't see why we would need more; those two verbs describe just about everything we need, and they do it with a proper amount of vagueness, not describing much more than what they can deliver.
Something like Link Template headers (or even more conservatively <link>) provide a much greater vocabulary, and they are so wonderfully composeable compared to HTTP verbs. I think that's a much more interesting direction.
Ian,
Could you please define "the web we have now"? I fail to understand your point as I am not certain of what you mean by this assertion.
Thanks
I mean web applications people have been building in the field, implemented for the current batch of browsers.
# Ian Bicking
Well then I'm sorry but I do not understand your point at all. REST is not effective today because it is still widely misunderstood IMO (I'm not saying I understand it cmprehensively). Too many people think RESTful URLs equal REST application. It is so wrong. RESTful URLs are a mean. REST is a set of principle.
I really miss your point here Ian.
I perhaps state my anti RESTful URLness too strongly. There's obviously nothing wrong with such URLs. There's just not much particularly right about them either. They are just strings either way. How they are read by humans isn't very important. The verbs are more important, and using more verbs presents real problems with existing applications and clients.
# Ian Bicking
I don't think you can really think about a purely RESTful approach when you're using a browser since usually you can only GET or POST from the browser.
The RESTful approach is quite powerful when applied to web services (REST+Atom, look at GData for a real use case) that are meant to be used by a machine and not a human.
Other than that I personally think that:
http://www.example.com/user/{userid}
is quite more pleasant to work with than:
http://www.example.com/userhome.php?userid={userid}
for two main reasons:
- Easier to remember for humans
- Not bounded to implementation details of any sort
Regarding point n°2, the example you're providing is exposing two major implementation details:
- The system is (or originally was) PHP based
- The userhome.php script expects an userid parameter inside the query string
this can provide useful information to someone who is trying to attack your site/application but even more important will force you (the developer) to keep the same scheme even if you're going to rewrite your app in another language.
Other than that I agree with Sylvain that your points regarding "the web we have now" are somewhat vague IMHO. ;-)
# michele
I'm gonna add something about http://www.example.com/user/{userid}
I'm changing servers as well as backend languages as we speak. It's a lot easier if the url is not bound to a particular programming language.
example:
http://www.example.com/userhome.asp?userid={userid}
becomes
http://www.example.com/userhome.jsp?userid={userid}
becomes
http://www.example.com/userhome.php?userid={userid}
becomes
http://www.example.com/userhome.aspx?userid={userid}
becomes
http://www.example.com/userhome.py?userid={userid}
and eventually:
http://www.example.com/user/{userid}
But
http://www.example.com/userhome?userid={userid}
is easily rewritten by Apache to fit any of those others. I think you're conflating two separate issues.
# Randall Randall
That's exactly right. One additional note on the following two URLs:
http://www.example.com/user/{userid} http://www.example.com/userhome?userid={userid}I'm not sure why the examples given so far have used two different forms of the URL (i.e. /user/... and /userhome...). To really compare apples to oranges I will use these:
http://www.example.com/user/{userid} http://www.example.com/user?userid={userid}These two URLs exhibit the difference between positional and keyword arguments in Python. The python equivalent would be:
from www.example.com import user user(1) user(userid=1)Given that distinction, they really are not the same at all (although both forms may work in Python if the first parameter of the user() function happens to be named "userid"). While some may argue that the first form is more "REST-ful", I would say simply that they are not the same and cannot be compared that way. The first form derives the meaning of the parameter from its position within the URL. In contrast, the second derives the meaning of the parameter from its explicit name.
There is one gotcha here though: conventionally "keyword arguments" are ignored by web servers if they are not "needed" by the server/script. This has the implication of making a set of textually unique URLs resolve to a single resource. For example:
http://www.example.com/user?userid=1 http://www.example.com/user?userid=1&count=10Depending on the implementation of the "user" page/script, these two URLs may or may not refer to the same resource. This may be viewed as either a benefit or a disadvantage in the implementation of HTTP servers. Of course the same thing could happen with "positional" arguments in HTTP. Given a sufficiently flexible (or ill-configured) server, the following two URLs may refer to the same resource as well (although it would violate convention):
http://www.example.com/user/1 http://www.example.com/user/1/10I would argue that the thing that needs to change is the ability of web servers to easily map arbitrary URLs to arbitrary resources. The structure of directories and files on a server is an outdated and constrained model. Even more outdated and outrageous is the use of file extensions to determine resource types. ModRewrite is a poor solution because it is far too complicated to configure for novice users. It's like trying to use a jackhammer to pound a finish nail--its nearly impossible to determine what it will hit unless you're well exercised in the art of regular expressions and other various criptic configuration giberish.
I always seem to find interesting blog posts by you long after you wrote them ;)
Some time I'm going to take another shot at nailing this whole MVC "vs." REST thing (which is to me far more interesting than REST vs. SOAP) - tried and failed once already here: http://www.sitepoint.com/blogs/2005/12/22/mvc-and-web-apps-oil-and-water/
What I was grasping for in "Who GETs REST?" (http://www.sitepoint.com/blogs/2005/11/22/who-gets-rest/) is a single rule / guideline people could use, from which a whole bunch of other consequences naturally fall out, without having to be able to grasp the whole of REST. But think that failed.
The real point is I think that 99% of today's web frameworks put you through loops as a developer are either just horrible or dangerous. By contrast, if we had an API which relates directly the REST, my guess is the whole web dev thing gets alot easier for real people to grasp - it would be natural even if you don't know much about HTTP.
Looking at what we've got today...
Considering struts - it's amazing that people are willing to accept that kind of API. The concepts struts pushes you to think in terms of (Actions, ActionMappers blah blah) have _zero_ relationship to the medium - HTTP. Struts becomes some kind of Zen excercise of thinking in 13 dimensions. There's only an artificial correspondance between URLs and code you're writing. And somehow the idea that a framework constrains how you use URLs is deeply wrong.
Meanwhile the Rails / Catalyst / Django / Turbogears approach - URLs to class methods has inverted the problem - it's almost too easy. Relateing URLs to class methods means people are "tunneling" all kinds of verbs through HTTP GET (delete/list/index/show/find/findByName etc. etc.) - and from there we have the whole "Goodnight Moon" factor (Mark Pilgrim, as a new father, being very dry - http://www.intertwingly.net/blog/2005/05/06/This-Stuff-Matters#c1115432785)
Perhaps the acid test is "how easy is it to implement conditional HTTP GET's"? This point doesn't travel so well, which is a shame - it's another "rule to illustrate the point" rather than a mere feature request. In both the above two MVC framework styles, doing any kind of HTTP caching is code you're going to have to tack on as a (very) painful after-thought.
To me the obvious "right path" is mapping URLs / resources to classes, which have methods corresponding to HTTP methods - then you get to have a property "last_modified" and your framework can handle the HTTP caching for you automatically.
Of the REST frameworks out there, web.py has the API right but is still being too light weight to provide "off the shelf" resources, which would help. There's also tonic (PHP) http://tonic.sourceforge.net/ which seems to be getting some of the fundamental ideas right, but needs to be more than a one-developer code base. Then there's RESTLET (http://www.restlet.org/) which looks promising but, in usual Java style, it's embraced choice (e.g. server container support) as a path to wasting my time. Also Rails finally seems to be heading this way (http://jimonwebgames.com/articles/2006/06/26/dont-say-crud-say-fucd) without complete submission though on the new method names. But no one seems to be _really_ there yet.
And in fact it's not really MVC vs. REST. The value of MVC-style seperation or concerns goes without saying but the problem is people tend to consider MVC as open season to inventing a ton of verbs for their application, but with HTTP the verbs are already fixed (and emphasize coarse grained APIs) - the nouns are where you get to have a choice - not a natural consequence of MVC.
At a fundamental level, the whole thing is kind of bizarre - it's taken this long for people to figure out how to write code to such a simple and widely used protocol (even if it is only half-implemented). It's like on the one hand we've got the "who gives a sh*t" crowd, hacking away with stuff like PHP, oblivious until someone tells them something else is cool while on the other we've got the "I love complexity" crowd, happy to buy obscure (typically Java) abstractions to flagellate themselves with, never questioning whether it's a good idea or not.
Anyway.


|
CRay Engine Mini
|
Defines the enums used in the engine to define groups of elements for various operations. More...
Typedefs | |
| typedef enum CRAY_ACCELERATION_STRUCTURE | CRAY_ACCELERATION_STRUCTURE |
| List of supported acceleration structures. More... | |
| typedef enum CRAY_INTEGRATOR | CRAY_INTEGRATOR |
| List of supported integrators. More... | |
| typedef enum CRAY_LOGGERENTRY | CRAY_LOGGERENTRY |
| List of supported log messages. More... | |
| typedef enum CRAY_IOR_DIELECTRICS | CRAY_IOR_DIELECTRICS |
| List of IOR for supported dielectrics, sampled at wavelength 526nm. Source: https://refractiveindex.info. More... | |
| typedef enum CRAY_IOR_CONDUCTORS | CRAY_IOR_CONDUCTORS |
| List of supported conductors (IOR and absorption), sampled at wavelengths 645nm, 526nm, 444nm. Source: https://refractiveindex.info. More... | |
| typedef enum CRAY_TEXTURE_WRAPPING | CRAY_TEXTURE_WRAPPING |
| List of supported texture wrapping modes. More... | |
| typedef enum CRAY_TEXTURE_MAPPING | CRAY_TEXTURE_MAPPING |
| List of supported texture mapping modes. More... | |
| typedef enum CRAY_TEXTURE_FILTERING | CRAY_TEXTURE_FILTERING |
| List of supported texture filtering modes. More... | |
Defines the enums used in the engine to define groups of elements for various operations.
| typedef enum CRAY_ACCELERATION_STRUCTURE CRAY_ACCELERATION_STRUCTURE |
List of supported acceleration structures.
| typedef enum CRAY_INTEGRATOR CRAY_INTEGRATOR |
List of supported integrators.
| typedef enum CRAY_IOR_CONDUCTORS CRAY_IOR_CONDUCTORS |
List of supported conductors (IOR and absorption), sampled at wavelengths 645nm, 526nm, 444nm. Source: https://refractiveindex.info.
| typedef enum CRAY_IOR_DIELECTRICS CRAY_IOR_DIELECTRICS |
List of IOR for supported dielectrics, sampled at wavelength 526nm. Source: https://refractiveindex.info.
| typedef enum CRAY_LOGGERENTRY CRAY_LOGGERENTRY |
List of supported log messages.
| typedef enum CRAY_TEXTURE_FILTERING CRAY_TEXTURE_FILTERING |
List of supported texture filtering modes.
| typedef enum CRAY_TEXTURE_MAPPING CRAY_TEXTURE_MAPPING |
List of supported texture mapping modes.
| typedef enum CRAY_TEXTURE_WRAPPING CRAY_TEXTURE_WRAPPING |
List of supported texture wrapping modes.
| enum CRAY_INTEGRATOR |
| enum CRAY_IOR_CONDUCTORS |
List of supported conductors (IOR and absorption), sampled at wavelengths 645nm, 526nm, 444nm. Source: https://refractiveindex.info.
| enum CRAY_IOR_DIELECTRICS |
List of IOR for supported dielectrics, sampled at wavelength 526nm. Source: https://refractiveindex.info.
| enum CRAY_LOGGERENTRY |
List of supported log messages.
| Enumerator | |
|---|---|
| CR_LOGGER_ERROR | Error messages: Execution will probably stop. |
| CR_LOGGER_WARNING | Warning messages: Some operation was unexpected or an error was caught and handled properly. |
| CR_LOGGER_INFO | Info messages: General information. Stats, timings, etc. |
| CR_LOGGER_ASSERT | Asserts: Something that shouldn't happen, happened. |
| CR_LOGGER_DEBUG | Debug: Verbose info. This should only be used in extreme cases or in conjunction with CR_debug_setTestPixelRange. |
| CR_LOGGER_NOTHING | Unused value. |
| enum CRAY_TEXTURE_MAPPING |


◄ 30th IPHO 1999 ►
Country results • Individual results
| Contestant | Country | Rank | Award |
|---|---|---|---|
| Konstantin Kravtsov | Russia | 1 | Gold Medal |
| Serguei Syritsyn | Russia | 2 | Gold Medal |
| Sadegh Dabiri | Islamic Republic of Iran | 3 | Gold Medal |
| Mohammad Hossein Taghavi | Islamic Republic of Iran | 4 | Gold Medal |
| Ruimin He | Singapore | 5 | Gold Medal |
| Andrei Malashevich | Belarus | 6 | Gold Medal |
| Tao Ji | People's Republic of China | 7 | Gold Medal |
| Alexander Tchudnovski | Russia | 8 | Gold Medal |
| Dongsung Huh | Republic of Korea | 9 | Gold Medal |
| Peter Uchenna Ezenweze Onyisi | United States of America | 10 | Gold Medal |
| Yegor Guzhvin | Estonia | 11 | Gold Medal |
| Valeriy Halyant | Ukraine | 12 | Gold Medal |
| Pavlo Boyko | Ukraine | 13 | Gold Medal |
| Andrew Lin | United States of America | 14 | Gold Medal |
| Benjamin Bryant Mathews | United States of America | 15 | Gold Medal |
| Evgeni Panov | Russia | 16 | Gold Medal |
| Jyh-Miin Lin | Taiwan | 17 | Gold Medal |
| Liang Jiang | People's Republic of China | 18 | Gold Medal |
| Ali Saadat Melli | Islamic Republic of Iran | 19 | Gold Medal |
| Baek-Lok Oh | Republic of Korea | 20 | Gold Medal |
| Shervan Fashandi | Islamic Republic of Iran | 21 | Gold Medal |
| I Made Agus Wirawan | Indonesia | 22 | Gold Medal |
| Chun-Chia Chen | Taiwan | 23 | Gold Medal |
| Karlis Goba | Latvia | 24 | Gold Medal |
| Oleksandr Zozulya | Ukraine | 25 | Gold Medal |
| Nenad Vukmirovic | Yugoslavia | 26 | Gold Medal |
| Jan Houštěk | Czech Republic | 27 | Gold Medal |
| Aydin Babakhani | Islamic Republic of Iran | 28 | Gold Medal |
| Ákos Hegedűs | Hungary | 29 | Gold Medal |
| Ariel Amir | Israel | 30 | Gold Medal |
| Gergely Katona | Hungary | 31 | Silver Medal |
| Juri Polianski | Russia | 32 | Silver Medal |
| Mayank Rawat | India | 33 | Silver Medal |
| Anastasios Panayioti Koutsoulidis | Cyprus | 34 | Silver Medal |
| Stevan Nadj-Perge | Yugoslavia | 35 | Silver Medal |
| Xuefeng Duan | People's Republic of China | 36 | Silver Medal |
| Chi-Heng Huang | Taiwan | 37 | Silver Medal |
| Thomas Morfett | United Kingdom | 38 | Silver Medal |
| Andrey Sapronov | Kazakhstan | 39 | Silver Medal |
| Zilong Chen | Singapore | 40 | Silver Medal |
| Leanid Klimovich | Belarus | 41 | Silver Medal |
| Costin Bontas | Romania | 42 | Silver Medal |
| Xun Jia | People's Republic of China | 43 | Silver Medal |
| Alexander Ashadze | Georgia | 44 | Silver Medal |
| Sandeep Bala | India | 45 | Silver Medal |
| Grant Schuster | Australia | 46 | Silver Medal |
| Natalia Toro | United States of America | 47 | Silver Medal |
| Quang Tien Ngo | Vietnam | 48 | Silver Medal |
| Stefan Salom | Yugoslavia | 49 | Silver Medal |
| Gabriele Vajente | Italy | 50 | Silver Medal |
| Borislav Antic | Yugoslavia | 51 | Silver Medal |
| Artur Shvedau | Belarus | 52 | Silver Medal |
| Thanh Lam Nguyen | Vietnam | 53 | Silver Medal |
| Dzmitry Shyroki | Belarus | 54 | Silver Medal |
| Ferdinand Wawolumaya | Indonesia | 55 | Silver Medal |
| Adrian Orbita Solis | Philippines | 56 | Silver Medal |
| Joseph Virden | United Kingdom | 57 | Silver Medal |
| Edward Shin | Australia | 58 | Silver Medal |
| Matti Oskari Järvinen | Finland | 59 | Silver Medal |
| Amit Agarwal | India | 60 | Silver Medal |
| Juan Manuel Tonello | Argentina | 61 | Silver Medal |
| Zhipeng Zhang | People's Republic of China | 62 | Silver Medal |
| Alar Mitt | Estonia | 63 | Silver Medal |
| Gerald Cooray | Sweden | 64 | Silver Medal |
| Guntis Feldmanis | Latvia | 65 | Silver Medal |
| Serkan Cabi | Turkey | 66 | Silver Medal |
| Karel Kyrián | Czech Republic | 67 | Silver Medal |
| Csaba Péterfalvi | Hungary | 68 | Silver Medal |
| Richard Kralovic | Slovakia | 69 | Silver Medal |
| Xuan Thanh Pham | Vietnam | 70 | Silver Medal |
| Simon Rößner | Germany | 71 | Silver Medal |
| Jaap Eldering | Netherlands | 72 | Silver Medal |
| Atanas Ivanov Pavlov | Bulgaria | 73 | Silver Medal |
| Seung-Hun Lee | Republic of Korea | 74 | Silver Medal |
| Merse Előd Gáspár | Hungary | 75 | Silver Medal |
| Francesco Benini | Italy | 76 | Silver Medal |
| David Hammond | United Kingdom | 77 | Silver Medal |
| Andrzej Janusz Jarosz | Poland | 78 | Silver Medal |
| Constantin Tănasa | Romania | 79 | Silver Medal |
| Alejandro Gomez Gonzalez | Colombia | 80 | Silver Medal |
| Oleh Miroshnichenko | Ukraine | 81 | Silver Medal |
| Toyly Anniyev | Turkmenistan | 82 | Silver Medal |
| Grigory Ovanesyan | Georgia | 83 | Silver Medal |
| Milan Dobric | Yugoslavia | 84 | Silver Medal |
| Aleko Khukhunaishvili | Georgia | 85 | Silver Medal |
| Mathijs Vogelzang | Netherlands | 86 | Silver Medal |
| Andreas Lochmann | Germany | 87 | Silver Medal |
| Filip Crnogorac | Canada | 88 | Silver Medal |
| Ayhan Düzgün | Turkey | 89 | Silver Medal |
| Tung Lam Dao | Vietnam | 90 | Silver Medal |
| Przemysław Piotr Broniek | Poland | 91 | Silver Medal |
| Hristo Stefanov Iliev | Bulgaria | 92 | Silver Medal |
| Monica Guica | Romania | 93 | Silver Medal |
| Ahmet Tura | Turkey | 94 | Silver Medal |
| Chih-Ching Chen | Taiwan | 95 | Silver Medal |
| Jason Oh | United States of America | 96 | Silver Medal |
| Youngsub Yoon | Republic of Korea | 97 | Silver Medal |
| Jaroslav Janský | Czech Republic | 98 | Silver Medal |
| Harsha Venkatesh Madhyastha | India | 99 | Silver Medal |
| Luca Ferretti | Italy | 100 | Silver Medal |
| Dmytro Yakubovskyj | Ukraine | 101 | Silver Medal |
| Tom Faulkner | Australia | 102 | Bronze Medal |
| Suvrat Raju | India | 103 | Bronze Medal |
| Nerijus Rusteika | Lithuania | 104 | Bronze Medal |
| Chun-Hao Wei | Taiwan | 105 | Bronze Medal |
| Hakjoon Lee | Republic of Korea | 106 | Bronze Medal |
| Kairat Akhmetov | Kazakhstan | 107 | Bronze Medal |
| Marek Tomasz Biskup | Poland | 108 | Bronze Medal |
| Nguyen Thanh Trung | Vietnam | 109 | Bronze Medal |
| David de Kloet | Netherlands | 110 | Bronze Medal |
| Jerry Prawiharjo | Indonesia | 111 | Bronze Medal |
| Keve Kurucz | Slovakia | 112 | Bronze Medal |
| Stefan Menzel | Germany | 113 | Bronze Medal |
| Roy Harpaz | Israel | 114 | Bronze Medal |
| Bogdan Marinoiu | Romania | 115 | Bronze Medal |
| Nándor Gulyás | Hungary | 116 | Bronze Medal |
| Lenka Zdeborová | Czech Republic | 117 | Bronze Medal |
| Jan Kuipers | Netherlands | 118 | Bronze Medal |
| Mihail Amarie | Romania | 119 | Bronze Medal |
| Anatol Pomazau | Belarus | 120 | Bronze Medal |
| Douglas Turk | Australia | 121 | Bronze Medal |
| Alexander Jaoshvili | Georgia | 122 | Bronze Medal |
| Bernardo Pando | Argentina | 123 | Bronze Medal |
| Carlo Castellana | Italy | 124 | Bronze Medal |
| Hojjat Bazzazi | Canada | 125 | Bronze Medal |
| Jiahan Eugene Seo | Singapore | 126 | Bronze Medal |
| Anson Cheung | United Kingdom | 127 | Bronze Medal |
| Nikolay Anguelov Ivanov | Bulgaria | 128 | Bronze Medal |
| Justas Brazauskas | Lithuania | 129 | Bronze Medal |
| Sonny Chan | Canada | 130 | Bronze Medal |
| Vladlen Iacovlevici Timciuc | Moldova | 131 | Bronze Medal |
| Øyvind Grotmol | Norway | 132 | Bronze Medal |
| Samuele Chiesa | Switzerland | 133 | Bronze Medal |
| Zhanybek Alpichshev | Kazakhstan | 134 | Bronze Medal |
| Thammanit Pipatsrisawat | Thailand | 135 | Bronze Medal |
| Eugene Osovetsky | Canada | 136 | Bronze Medal |
| Raido Valgeväli | Estonia | 137 | Bronze Medal |
| Hannu Örn | Finland | 138 | Bronze Medal |
| Andris Gulans | Latvia | 139 | Bronze Medal |
| Wenzheng Yeo | Singapore | 140 | Bronze Medal |
| Amitai Zernik | Israel | 141 | Bronze Medal |
| Michael Schiestl | Austria | 142 | Bronze Medal |
| Jeremy Challoner | United Kingdom | 143 | Bronze Medal |
| Eyal Hitron | Israel | 144 | Bronze Medal |
| Pekka Marttinen | Finland | 145 | Bronze Medal |
| Ersad Pasayev | Azerbaijan | 146 | Bronze Medal |
| Barkley Bellinger | Ireland | 147 | Bronze Medal |
| Vaclav Bednar | Slovakia | 148 | Bronze Medal |
| Landobasa Lumbantobing | Indonesia | 149 | Bronze Medal |
| Vidas Pazusis | Lithuania | 150 | Bronze Medal |
| Bardhyl Fatmir Kazazi | Albania | 151 | Bronze Medal |
| Miguel Lazaro | Spain | 152 | Bronze Medal |
| Fabian Hassler | Liechtenstein | 153 | Bronze Medal |
| Arthur Corstanje | Netherlands | 154 | Bronze Medal |
| Urban Simončič | Slovenia | 155 | Bronze Medal |
| Dusko Kuzmanovski | North Macedonia | 156 | Honourable Mention |
| Patrik Sundberg | Sweden | 157 | Honourable Mention |
| Gil Litichever | Israel | 158 | Honourable Mention |
| Joel Karl Fridriksson | Iceland | 159 | Honourable Mention |
| Patrick Lehner | Switzerland | 160 | Honourable Mention |
| Matej Kanduč | Slovenia | 161 | Honourable Mention |
| Fritz Andres Campo Schickler | Colombia | 162 | Honourable Mention |
| Amy Peng | New Zealand | 163 | Honourable Mention |
| Kasper Risager Larsen | Denmark | 164 | Honourable Mention |
| Mihael Kadunc | Slovenia | 165 | Honourable Mention |
| Piotr Nowakowski | Poland | 166 | Honourable Mention |
| Elion Ramazan Limanaj | Albania | 167 | Honourable Mention |
| Martin Eckstein | Germany | 168 | Honourable Mention |
| Ergyz Islam Islami | Albania | 169 | Honourable Mention |
| Minttu Uotila | Finland | 170 | Honourable Mention |
| Şaban Mustafa Huş | Turkey | 171 | Honourable Mention |
| Shkelzen Isuf Hasanaj | Albania | 172 | Honourable Mention |
| Andrew Mackinlay | Australia | 173 | Honourable Mention |
| Dündar Yılmaz | Turkey | 174 | Honourable Mention |
| Pavel Petrov | Estonia | 175 | Honourable Mention |
| Michael James | Canada | 176 | Honourable Mention |
| Fatnir Agim Likrama | Albania | 177 | Honourable Mention |
| Rex Ian Garcia Sayson | Philippines | 178 | Honourable Mention |
| Diego Garcia | Argentina | 179 | Honourable Mention |
| Peter Molnar | Slovakia | 180 | Honourable Mention |
| Reinaldo Garcia | Cuba | 181 | Honourable Mention |
| Ivan Juric | Croatia | 182 | Honourable Mention |
| Kaloyan Minev Penev | Bulgaria | 183 | Honourable Mention |
| Ma'muri | Indonesia | 184 | Honourable Mention |
| Yaroslav Alexandrov | Kazakhstan | 185 | Honourable Mention |
| Eimantas Jatkonis | Lithuania | 186 | Honourable Mention |
| Pradit Tummavetvitee | Thailand | 187 | Honourable Mention |
| Michael Sass Hansen | Denmark | 188 | Honourable Mention |
| Idrish Huet | Mexico | 189 | Honourable Mention |
| William Han | New Zealand | 190 | Honourable Mention |
| David Brunner | Switzerland | 191 | Honourable Mention |
| Lali Tchelidze | Georgia | 192 | Honourable Mention |
| Andrea Barison | Italy | 193 | Honourable Mention |
| Rui Alexandre Silva Bebiano | Portugal | 194 | Honourable Mention |
| Frank Freimuth | Germany | 195 | Honourable Mention |
| Eamonn Donnchada Murray | Ireland | 196 | Honourable Mention |
| Islam Bedirov | Azerbaijan | 197 | Honourable Mention |
| Tawan Sinchai | Thailand | 198 | Honourable Mention |
| Tom Brouwers | Belgium | 199 | Honourable Mention |
| Altankhuyag Bilguun | Mongolia | 200 | Honourable Mention |
| Juraj Suchar | Slovakia | 201 | Honourable Mention |
| Pekka Rainvuori | Finland | 202 | Honourable Mention |
| Martin Zdráhal | Czech Republic | 203 | Honourable Mention |
| Felix I. Parra | Spain | 204 | Honourable Mention |
| Adiyasuren Altanbileg | Mongolia | 205 | Honourable Mention |
| Johan Levin | Sweden | 206 | Honourable Mention |
| Rory Redmond | Ireland | 207 | Honourable Mention |
| Andreas Vogelsanger | Switzerland | 208 | Honourable Mention |
| Elmo Tempel | Estonia | 209 | Honourable Mention |
| Pang-Che Huang | New Zealand | 210 | Honourable Mention |
| Ignace Bogaert | Belgium | 211 | Honourable Mention |
| Gilles Duvoisin | Switzerland | 212 | Honourable Mention |
| Jasmin Šahbegović | Bosnia and Herzegovina | ≥213 | |
| Belma Bosankić | Bosnia and Herzegovina | ≥213 | |
| Sadik Ibišević | Bosnia and Herzegovina | ≥213 | |
| Ognjen Marić | Bosnia and Herzegovina | ≥213 | |
| Zoran Popović | Bosnia and Herzegovina | ≥213 |
Results may be incomplete or incorrect.
Please send the relevant information to the webmaster:
<EMAIL_ADDRESS>If you are a participant you can send a personal page URL to be attached to your name.
If you are a participant you can send a personal page URL to be attached to your name.