--- layout: syllabus title: Philosophy of Religion in Jewish Christian Medieval Sources ---
The impetus for this course first was my participation in an NEH Summer Institute (2010): Representations of the 'Other': Jews in Medieval Christendom. From this seminar, I then applied for a further grant from the Boston College Center for Christian-Jewish Learning to create a model syllabus that would use both Christian and Jewish medieval primary texts, but would also fit well within in a philosophy department. In my grant proposal, I explained the project this way:
"During the summer of 2010, I was fortunate to participate in five week seminar on Jewish-Christian relations in the Middle Ages. This seminar, put on by the National Endowment for the Humanities, brought together twenty educators of English, history, religion, and philosophy. I was lucky to be among the three graduate students admitted. The design of the program was to help the gathered educators to acquire or further an expertise in Jewish-Christian relations in the Middle Ages. The aim was that educators could then use this acquired knowledge to enhance their own undergraduate teaching. Five different scholars in various fields were brought in to introduce us to the different aspects of this complex history. I came away very much enriched by the seminar. I acquired a much deeper knowledge of the social, political, and religious history that constitutes much of the history of Jewish-Christian relations. Likewise, I was fortunate to gain a familiarity with thinkers and texts that I was not aware of beforehand. However, I also left slightly perplexed. As one of the goals of the seminar was to equip us with knowledge that we could then use in undergraduate teaching, it was not immediately clear to me how I should construct a course for my own discipline, philosophy.
"I believe that part of the reason for this quandary is that is not always clear how to engage the intellectual production of these thinkers in a systematic way. It is much easier to proceed historically and create distinctions and divisions across time and region. And this is what our seminar primarily did. However things become more complex when one becomes interested in the exchange and compatibility of ideas. Here the divide between community, time, and even religion does not always provide us with a very helpful picture of the exchange of ideas between Jews and Christians. In fact, certain historical and religious divisions mask genuine conceptual commonalities among Jewish and Christian thinkers as well as deep differences between co-religionists.
"In light of this, I would like to undertake a very conscientious and detailed design of a philosophy of religion course that would use the texts of Medieval Jewish and Christian thinkers as its source texts, dividing them according to the customary problems of philosophy of religion. Such a course would not only provide a possible path in which the dynamic of Jewish-Christian relations could enter into a mainstream philosophy department, but it would also provide a different perspective from which Jew and Christian thinkers in the Middle Ages can be compared and contrasted ."
In response to this proposal I received the young scholars grant from the Center for Christian-Jewish Learning to prepare the following syllabus and to make it available online. I have prepared the syllabus under the direction of Daniel J. Lasker, the 2010-2011 Concoran Visiting Chair at Boston College and a world expert on Jewish and Christian medieval polemical literature.
The objectives of the course are two-fold. First, it is hoped that students will be introduced to the classical problems of philosophy of religion as they appear in their medieval forms. These problems are enduring and have plagued philosophy from its inception to the modern day. Further, by focusing on these problems, within a particular historical period, students will be confronted with unusual and foreign perspectives on these problems that one would not often find in purely contemporary discussions. Likewise, because of the undeniable reliance of medieval thought on the classical past, students will be forced to engage with both the Aristotelian and Platonic traditions in deeper ways.
The second objective of this course is to become more familiar with common concerns that characterize both Jewish and Christian philosophical approaches to religion. Through comparing and contrasting these positions, we will be attentive to the range of possible solutions to these common problems. We will also look at the impetus for these solutions and try to assess how and whether the religious background of each thinker informs their attempted solution. In short, we will look to see how the "particularist" claims of "particularist" religions affect and shape philosophy's supposedly "universalist" and common approach to religious concerns.
Course Packet
See also Primary Source Bibliography
Attendance and strong participation will be a must for this course.
Semi-weekly responses that require students to struggle with major interpretative questions. It is expected that students delve into some of the secondary source material in forming their response.
A substantial research paper where students choose one of the core problems and focus on a problematic aspect of Jewish/Christian responses. It is expected that chosen problems will engage with both Jewish and Christian sources. This may come about either through recognizing a common problem that both traditions share or by noting a problem that is unique to a particular tradition, and helping the reader to understand why this problem is unique to only one of these two closely related religious traditions.
Negotiating and articulating the relationship between faith and reason is a necessary prologue to any philosophy religion. It is here that boundaries are drawn and the formal identity of a philosophy of religion is established in contrast to other approaches to religious truth. For the medievals, the most dominant contrast with faith or theology, which typically takes revealed data as its central starting point. However, understanding and distinguishing between faith and reason was also important for the medievals for another reason: namely, it was a serious and debated question as to whether and to what extent faith could improve a genuinely philosophical discourse.
In this opening problem, we begin from Maimonides' reflections on the history and influence of "Kalam" in both Christian and Muslim forms. We will pay special attention to what Maimonides understands by "Kalam" and his criticisms of it. Some attention will be given to the ways modern scholarship has criticized the historical narrative Maimonides provides. From here we momentarily move backward in time to consider the work of Saadia and to evaluate his approach to faith and reason in light of the narrative given by Maimonides. Finally, we turn explicitly to the perspective on faith and reason in the works of Thomas Aquinas. The views of Thomas Aquinas will be put alongside those of Maimonides so that we can draw a fruitful comparison. We will also try to assess the place that Aquinas holds with respect to the Christian tradition itself, both with what comes before and with what immediately follows.
In light of the importance of revealed data for medieval thinkers and their interest in its potential value for good philosophy, it makes sense to consider early on whether or not there can be a philosophical justification for this revealed data. Medieval Christians and Jews were certainly aware of the need to find some way to justify and validate what they took to be real and authoritative revelation. In short, reason plays a role in what we choose to be our 'authorities'. Thus how revelation occurs and how it can be identified as genuine were central preoccupations for Jews and Christians alike. In this section we compare the philosophical justifications of revelation and prophecy found in the Jewish sources of Saadia, Maimonides, and Gersonides with the justifications found in Aquinas and Duns Scotus.
The question of God's existence is the first and most foundational question of medieval philosophical approaches to God. The quest to provide a rational account for the beliefs of a religious system begins with the search for a rational demonstration of the existence of God.
In this section, we consider first Maimonides' proofs for God's existence. Here, we will be introduced to the idea of the cosmological argument in particular and the form this argument takes in both Aristotle's and Maimonides' work. Of particular interest will be what these proofs seem to tell us about who God is. The attributes of unity, incorporeality, and necessary existence will be especially important as they will carry with them ramifications for how philosophy may approach the religious doctrine of creation (Problem IV) and the possibility of divine attributes (Problem V). After looking a Maimonides' proofs, we compare these proofs with the five-ways of Thomas Aquinas. To these arguments, we add a consideration of Anselm's ontological argument and its fate in the medieval Christian tradition.
Central to our general consideration is the tension between the religious desire for a rational proof and religious dissatisfaction with the kind of God that a philosophical proof seems to demand. A brief consideration of Judah Halevi's critique of Aristotelian-like proofs will serve as helpful example of this tension.
In light of the centrality of the cosmological argument for philosophical attempts to prove God's existence, we next turn to what these argument can tell us about who God is and the manner in which he can and cannot relate to the physical world. In particular, we focus on the difficulty of how an immaterial being can have a causal role in physical change. We look first at Aristotle's view of how God can (and cannot be) thought of as the first cause. Secondly, we turn to the neo-Platonic qualifications of Aristotle's idea. In surveying Aristotle's solution to this problem, we will also be attentive to the close connection between this solution and Aristotle's position on the eternity of the world.
With these fundamental conceptual problems and possible solutions in the background, we move to see how Jewish and Christian sources adopted, altered, or rejected these philosophical approaches. Much time will be spent considering a third view of creation - creatio ex nihilo - against the Aristotelian and Neo-Platonic positions. Our attention will be on how Jewish and Christian authors dealt with the philosophical objections to creatio ex nihilo as well as how far they thought reason could go toward either demonstrating the fact of creatio ex nihilo or demonstrating its impossibility. The latter question was particularly acute for medieval thinkers, since Aristotle's beloved cosmological proof for God's existence, at times, appeared to required that the world was eternal. Maimonides and Aquinas together represent a middle ground in this debate, arguing that: while reason cannot demonstrate creatio ex nihilo, neither can reason demonstrate the necessity of the eternity of the world. In this way, they attempt to put some distance between Aristotle and themselves. Further, in recognizing the impotence of reason at this juncture, they established a place where faith must become operative. As representatives of the two extremes, we will look at the positions of Gersonides and John Pecham respectively. Gersonides disagrees with Maimonides and believes that reason can establish that creatio ex nihilo is not possible, and we will further consider how he believes this to be perfectly compatible with Jewish teaching. On the other hand, we will see in John Pecham's debate with Aquinas, a view the claims to have found a genuine demonstration against the eternity of the world and in support of the doctrine creatio ex nihilo.
In this problem, we consider how philosophers have approached the question of human speech about God. As we explore the problem we follow a two-fold difficulty. On the one hand, we analyze the way Jewish and Christian philosophers assess the general applicability of human attributes to God. Much attention will be given here to the philosophical commitment to God's unity and by extension God's incorporeality. Are human words and descriptions, formed in corporeal and multifarious reality, actually applicable to God? Can they signify anything true? If so, how? On the other hand, setting aside the problem of human language, we consider the more fundamental question of whether a description of the divine is in principle possible. This is a deeper ontological or metaphysical question about God's nature. The answer to this question rests on the nature of one's prior philosophical commitment to the simplicity of God. The thinkers treated here will wrestle with the question of whether God can have any attributes at all or whether attributes necessarily add complexity into the essential nature of the divine.
The problem for Jewish and Christians thinkers alike can be traced all the way back to Moses' encounter with God on Mount Sinai and his request that God reveal to him His name. In our discussion, we begin by considering how Saadia and Maimonides, armed with their established philosophical convictions, navigate both of the above problems. Because of the highly anthropomorphized language of Jewish canonical texts, the first problem about the value of human language will be particularly acute. We will watch to see how each philosopher explains how this anthropomorphized language should be interpreted. In the Guide, I, 51-52 Maimonides catalogue five categories of attributes and assess whether or not any of these attributes can be applied to God in principle. From here we will turn to Gersonides' critique of Maimonides.
Turning from Jewish sources to Christian, we observe how Christian thinkers wrestle with the same twofold problem. We will look first to Aquinas's notion of God's simplicity and his analogical approach to speech about God; for Aquinas, this approach provides a middle way between pure equivocity and a kind of speech about God that claims adequacy. Special attention will be given to comparing this approach to that of Maimonides, noting both similarities and differences. Finally, we will consider both Scotus's argument for the possibility of univocal speech about God and his own view about divine simplicity. We will also compare Scotus's disagreement with Aquinas on the one hand and Gersonides's disagreement with Maimonides on the other. Here we will look for common convictions behind these two critiques.
In light of the evident centrality that the philosophical doctrine of divine simplicity plays for both Jewish and Christian authors, it is worth our time to explore the polemical role that this doctrine plays in Christian and Jewish debates. The Christian doctrine of the Trinity lies at the center of this debate and for Jewish thinkers (and often many Christian thinkers) this doctrine challenges the rationality and philosophical validity of Christian conceptions of God. In this debate, we will see previously examined philosophical principles put to work, as they are used to establish the boundaries of rationality, and consequently the boudaries of true religion.
In this problem we begin with the puzzle of Aristotle's Book X of the Ethics and the difficulty it has posed for commentators since it was written. Our attention will then turn to how Jewish and Christian thinkers have (or have not) adopted Aristotle's convictions regarding the happy life. Of particular interest is how these thinkers synthesize Aristotle's vision(s) of happiness with the traditional religious visions of the happy life as conveyed in their respective sacred texts.
After introducing ourselves to Aristotle, we turn first to Saadia and his general praise of the practical life. Here, we will be introduced to the Jewish notion of "mitzvot" (or the laws of the Torah) and how it functions, either as a mere preparation for the happy life or conversely as constitutive of the happy life itself. Next, we turn to Maimonides' intellectualist vision of the happy life and the value he assigns to both the practical life and religious practice and ritual. In transitioning from Maimonides to Aquinas, we will first turn back to Augustine's extremely influential remarks on the happy life and the (im)possibility of achieving the happy life in this life. We then meet Aquinas at a crossroads: where the Aristotelian and Augustinian traditions seem opposed. Our focus will be on how he attempts to synthesize these two separate traditions and bring them into harmony. Specifically, he introduces two kinds of happiness, natural and supernatural happiness. In light of this distinction between kinds of happiness, we will look carefully at the role and the importance of religious practice in comparison to the position of Maimonides.
In this section we focus on the nature of law and the (im)possibility of its rational justification. We start by looking at some of the concerns with a project aimed at rationally justifying divinely revealed laws: concerns voiced both in the early rabbinic period and debates within Kalam between the Mut'azilites and the Ash'arites. From here we move to the development of distinct categories of laws, with which reason relates in different ways. We will look at Saadia first, who appears to shows a willingness to recognize some laws which reason can explain and other laws that reason cannot explain. Nevertheless, we will see that even these latter laws can be seen to a have a rational basis. From here we turn to Maimonides, who some see as being critical of the kind of approached advanced by Saadia in a favor of an even more rationalist approach to laws. Still, we will see Maimonides struggle to find explanations for certain classes of laws. Eventually he will introduce the notions of the first and second intentions of laws to help him deal with those religious laws whose justification does not appear obvious to common reason. Finally, we look at Aquinas, who makes a distinction between four kinds of law. Our attention will focus especially on the difference between Natural and Divine laws. However, we will also consider Aquinas' reflection on the Old and New Laws and whether there can be a rational justification for the creation of new obligations and the abandonment of old obligations. In discussing this problem, students will be introduced to common categories of ethical reasoning, such as "consequentialist reasoning", "teleological or virtue ethics," and "deontological commands."
In this section, we first introduce ourselves to the problem of evil in general, its classical formulation, and the division of the problem into its "evidental" and "logical" forms. Subsequently, we turn to an early medieval text, foundational for all considerations of the problem of evil: the Consolation of Philosophy. From Boethius' description of Lady Philosophy's answer to the problem of evil and it's correlative conception of divine providence, we will see an example of a fairly traditional philosophical solution to the problem of evil and the kind of God that this solution presumes. Here we will be introduced to the notion of evil as an actual "nothingness" or mere privation of the good. With this initial solution in the background, we can look to alternative solutions proposed by Boethius himself and later Saadia. In each of these subsequent solutions, we will note certain dissatisfactions with the easy dismissal of evil in a "privation theory" and with the conception of God as an aloof and uninvolved observer. In response, new solutions will be proposed that imagine a more interactive God, who is involved with the minutia of creaturely affairs. In turn, we can see justifications for suffering, which are rooted in appeals to the actions of individuals and to the contingent circumstances of each particular moment. In our survey of both Boethius and Saadia, we will also be attentive to the more strictly religious presuppositions that underly their solutions: most notably, the ideas of immorality and the after-life.
Following our consideration of the traditional philosophical response and early reactions, we turn to the views of Maimonides, Gersonides, and Aquinas. These views will be compared with the earlier views as well as with each other. In particular, we will note how Maimonides and Gersonides return to a more naturalistic notion of providence, and we will evaluate how this impacts their solutions to the problem of evil. With the thought of these two Jewish thinkers in the background, we will evaluate Aquinas' views on providence and the extent to which suffering is a feature of the created order or the result of particular decision of the divine will.
For our final problem, we focus on what philosophy has to say about the possibility of an afterlife and a bodily resurrection. This question takes on considerable interest for us in light of the important role the notion of an after-life played both for philosophy's attempt to make sense of religious notions of happiness as well as for philosophy's attempt to form a coherent explanation for the undeniable reality of suffering,
We focus first on the arguments for the immortality of the soul. We will compare the responses given in the work of Saadia, Maimonides, and Aquinas, while paying homage, where appropriate, to the Aristotelian foundation underlying their reasoning.
After considering the possibility of the immortality of the soul, we move to considerations of the possibility of a bodily resurrection in the same authors. Here we will be attentive to why this is such an important concern for these religious philosophers as well as to the specifics of their arguments. This final consideration will involve us in a larger question about miracles. This larger question forms an effective conclusion for our course. It brings together many of the themes that have already arisen in earlier problems; most notably, we will be forced to reconsider God's relationship to the created order and his ability to alter or violate the laws of nature. Moreover we will have occasion to face once more the question of what reason can understand and the possibility of what reason cannot demonstrate.


How do we start with young people and what they care about insted of specific content to do great projects that build relationships, skills, and self-efficcacy
Step 2. Notice what they're into and authentically center it & connect it to what you're doing.
Principle: All interests are useful
Context: Moving Machines in a math class
Principle: Sometimes it's useful to build trust with people by putting them with friends and if they're "too cool for school" — connect them with something that's intrinsically awesome and ready to go.
Context: Moving Machines / Adaptations in a English Class
The power of going (literally) right outside school and buying costumes for $2 at goodwill
How can educators DESIGN units or environments that enable this kind of divergence & also allow for collaboration?
Bottom line: It's exciting to design learning experiences by starting with humans rather than content/information transmission per se
It has made me think more about creating learning environments rather than classes.


This is an experimental tool that helps a reader keep track of their position in the text by simply tapping or clicking on the 'NEXT' button for each word they read. With each tap the next word is highlighted, allowing the reader to proceed at their own rate.
The highlighting technique used is probably not ideal. This was just the first one that I found that was both obvious and didn't significally shift any of the adjacent text, which would be very distracting.
It should be possible to implement as a browser extension, allowing for the user to have this capability for the pages they want to read. However there are likely to be some limitations which would prevent it from working in practice. For example, it uses CSS styles and the styles used may cause issues with some pages.
I've only done minimal testing to see if it works with HTML features like:
- Lists
- hyperlinks


day I decided to buy the 'famous' legal herbal blend called Spice. The seller told me it was one of the few legal drug that works (here in Italy salvia divinorum is not legal). On the seller's website was written that Spice should give a mild cannabis-like high, so I wanted to give it a try.
After dinner the adventure began. I rolled the first joint with just Spice in it (no tobacco, no weed), more or less 500 mg (half the pack) and I started smoking with reggae music in background (to simulate a ganja situation :D). It tasted good (probably because of the vanilla and honey contained in it), but sometimes it made a bad effect in my throat.
After smoking I was a bit disappointed because I felt no real effect, apart of a very mild numb-like sensation that happens to hit me whenever and whatever I smoke (even cigarettes). So I turned off the music and went to my computer. I thought that maybe the effect could hit me later, so, even if I was thisty, I decided not to drink coke because I didn't want caffeine to interfere.
After ten minutes or so I began to feel the effects. I realized it when I turned my head to watch the tv, and I felt like someone hit me on my neck. Then I felt like the perception of my movements was a bit delayed compared to the movement itself. I lay down on the sofa, moving in turn every part of my body. If I moved my leg I felt the movement starting from my foot and spread to the whole body.
After another twenty minutes or so, the effects was vanishing So I decided to take a second dose. Actually I had some difficulty rolling it. So I smoked it, this time being prepered to the side-effects in my throat. After that I watched two movies, just playing with the effects of Spice, moving my body to feel the sensation it gave me. Then I decided it was time to go to bed. And here the experience started to become amazing. I turned of the light and closed my eyes. After some minutes I started seeing multi-color geometrical shapes dancing in front of me. I suddenly opened my eyes and they disappeared. So I closed my eyes again trying to second the visuals.
After a while I realized: I was having a closed-eyed trip. I started seeing what I was thinking about in tunnel-like shapes, dissolving and recomposing with different images. In the beginning I could not control what I was seeing, but then I found a way to do that: think about what I wanted to see and then think to what I was seeing at the very moment. So what I wanted replaced what I was seeing. After a while I began to have a mental 'stream of consciousness' (better than Lucky in 'Waiting for Godot'). My mind was wandering. I needed to go to bathroom, so I got up and went. I couldn't stop my thought even while there. Then something strange happened. When I thought something it seemed that another part of my mind would answer to the other one or contradict it, like there were two personalities in my head. It's been the only 'mystical' moment of the experience, since I understood that there are two parts in everything (ying&yang).
Then I went back to bed and continued having closed-eyes visions. After a while I fell asleep. I can't remember what I dreamt about, but I know I didn't sleep enough. In fact the following evening I was very tired and I had headache.
It had nothing to do with cannabis. First I felt the effects on my body, then I had closed-eyes visions, and finally free-thinking, everything remaining lucid, just physycally numb.
[package ingredient list: Baybean, Blue Lotus, Lion's Tail, Lousewort, Indian Warrior, Dwarf Scullcap, Maconha Brava, Pink Lotus, Marshmallow, Red Clover]
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


${applicationDescription} For further explanation, please see ${applicationLabel} Service User Guide and Tutorial.
Example: fig|1094551.3.peg.8


System Architect Symbol details for "Incident"
Activity (Class)
- Description:
Purposeful and intentional "Event"
- Comment:
-
Previous documented definitions providing the source for the above are:
An exertion of energy initiated by an "Agent" (CBS v2) - this definition is followed by a definition
of its subtypes.
Conscious, directed and purposeful exertion of energy.
"Event" occurring through the volition of an "Agent".
Definitions Used:
Quantity (Class Attribute)
classifier (Association)
- From Class:
"Incident Type"
- To Class:
Incident
- From Class:
"Incident Type"
- To Class:
Incident
end for (Association)
- From Class:
Timepoint
- To Class:
Incident
- From Class:
Timepoint
- To Class:
Incident
Event (Class)
- Description:
Something which happens.
Event/Essential Type (Generalization Node)
- Base Class:
Event
- Definitions Used:
-
Event (Class)
Incident (Class)
- Description:
"Event" occurring without known volition.
- Comment:
-
The word "known" should be emphasised; many events which are perceived as incidents (eg terrorist
bombs) are in fact activities when viewed from a different perspective. It's all to do with where
you are sitting.
The definition above, as for others, has been distilled from what has been suggested in the past,
including:
A distinct or definite occurrence. An event (sic) (CBS v2).
"Event" occurring without volition (of an "Agent").
Unintentional occurrence.
Incident Type (Class)
- Description:
"Descriptive Category" capable of being used as a category for "Incidents".
Location (Class)
- Description:
"Reference Point" being a point or set of contiguous points in space.
- Comment:
-
Previous documented definitions providing the source for the above are:
Point or set of contiguous points in space.
location for (Association)
- From Class:
Location
- To Class:
Incident
- From Class:
Location
- To Class:
Incident
start for (Association)
- From Class:
Timepoint
- To Class:
Incident
- From Class:
Timepoint
- To Class:
Incident
Timepoint (Class)
- Description:
"Reference Point" being a point or period in time.


Searching for errors and issues in Xcode generated output ⚓
This applies only to the raw, unfiltered output of Xcode.
If you can’t find the error reason in the logs make sure to switch the Output Tool
option
of the Xcode … step to xcodebuild
(Xcode’s Command Line Tool), which will
result in a quite verbose output, but will include everything the way it’s produced by
Xcode’s command line build tool (xcodebuild
). All of the official Bitrise Xcode steps
have an Output Tool
input with a xcodebuild
option.
You should search for error:
in the Xcode logs, in 99% of the cases that’ll be the one which causes your issues.
If that doesn’t work you should also search for warning:
, in rare cases Xcode doesn’t print an error:
even if it fails.
If you have the logs on your own machine then you can run something like this in your Terminal:
grep --color 'error:' my.log
grep --color 'warning:' my.log
Xcode Scheme not found ⚓
The first thing you should check if you can’t see your Xcode project’s scheme
during setup, or if you get a The project named "Foo" does not contain a scheme named "Bar"
error during build,
is your Xcode project settings.
- Check if the desired Scheme is shared
- When you share your scheme the Xcode project changes.
- If the related validation is still running on Bitrise abort it and try to run it again.
Don’t forget to commit & push the changes if you just enabled the Shared option!
This change should be reflected in your git
repository,
under you project / workspace
(which is actually a directory, just seems like a file in Finder):
*.xcodeproj OR *.xcworkspace/xcshareddata/xcschemes/SchemeName.xcscheme
.
If you still can’t see the desired Scheme,
try to look into your .gitignore
file and check if you are ignoring the config files of your Xcode project.
CocoaPods (missing) dependency issue ⚓
Error: ⚓
ld: library not found for -lPods-...
clang: error: linker command failed with exit code 1 (use -v to see invocation)
OR:
no such module '...'
Solution: ⚓
Most likely you use Cocoapods but you specified the Xcode project (.xcodeproj) file
instead of the Workspace (.xcworkspace
) file. Go to your App’s Workflow tab on Bitrise,
click Manage Workflows, click App Environments and change the BITRISE_PROJECT_PATH
item.
This will change the default Project Path configuration for every workflow.
If it worked before and the BITRISE_PROJECT_PATH
did not solve the issue,
then check your App’s other environments - the project file path might be overwritten by a Workflow environment variable,
or you might have specified a Project Path for the related Xcode step directly.
Fastlane Export Issue ⚓
This section was contributed by @kwoylie,
and applies if you have a Gemfile
in your repository and you use
the fastlane
step which uses the Gemfile
automatically if present.
Gemfile
content was:
gem "fastlane", "1.104.0"
gem "gym", "1.10.0"
gem "badge", "0.5.0"
gem "CFPropertyList","2.3.3"
gem "sqlite3", "1.3.11"
I have been battling issues with Fastlane just not letting me export to an enterprise build on bitrise cloud service. But it works perfectly fine on my colleagues and my machine.
I had disabled xcpretty on Fastlane and got the following error from gym:
$/usr/bin/xcrun /usr/local/lib/ruby/gems/2.3.0/gems/gym-1.10.0/lib/assets/wrap_xcodebuild/xcbuild-safe.sh -exportArchive -exportOptionsPlist '/var/folders/90/5stft2v13fb_m_gv3c8x9nwc0000gn/T/gym_config20161003-2206-1f0vw3k.plist' -archivePath /Users/vagrant/Library/Developer/Xcode/Archives/2016-10-03/App\ 2016-10-03\ 05.57.17.xcarchive -exportPath '/var/folders/90/5stft2v13fb_m_gv3c8x9nwc0000gn/T/gym_output20161003-2206-wjhjai'
+ xcodebuild -exportArchive -exportOptionsPlist /var/folders/90/5stft2v13fb_m_gv3c8x9nwc0000gn/T/gym_config20161003-2206-1f0vw3k.plist -archivePath '/Users/vagrant/Library/Developer/Xcode/Archives/2016-10-03/App 2016-10-03 05.57.17.xcarchive' -exportPath /var/folders/90/5stft2v13fb_m_gv3c8x9nwc0000gn/T/gym_output20161003-2206-wjhjai
2016-10-03 06:01:58.299 xcodebuild[5284:14924] [MT] IDEDistribution: -[IDEDistributionLogging _createLoggingBundleAtPath:]: Created bundle at path '/var/folders/90/5stft2v13fb_m_gv3c8x9nwc0000gn/T/App_2016-10-03_06-01-58.298.xcdistributionlogs'.
2016-10-03 06:01:59.596 xcodebuild[5284:14924] [MT] IDEDistribution: Step failed: <IDEDistributionThinningStep: 0x7f868c80f810>: Error Domain=IDEDistributionErrorDomain Code=14 "No applicable devices found." UserInfo={NSLocalizedDescription=No applicable devices found.}
error: exportArchive: No applicable devices found.
Error Domain=IDEDistributionErrorDomain Code=14 "No applicable devices found." UserInfo={NSLocalizedDescription=No applicable devices found.}
** EXPORT FAILED **
[06:01:59]: Exit status: 70
[06:01:59]: 2016-10-03 13:01:58 +0000 [MT] Running step: IDEDistributionSigningAssetsStep with <IDEDistributionContext: 0x7f868c51ed70; archive(resolved)='<IDEArchive: 0x7f868c4af8d0>', distributionTask(resolved)='2', distributionMethod(resolved)='<IDEDistributionMethodEnterprise: 0x7f868c202a00>', teamID(resolved)='(null)'>
Chain (2, self inclusive):
<IDEDistributionContext: 0x7f868c51ed70; archive = '(null)', distributionMethod='<IDEDistributionMethodEnterprise: 0x7f868c202a00>', teamID='(null)'>
<IDEDistributionContext: 0x7f868c4b0e70; archive = '<IDEArchive: 0x7f868c4af8d0>', distributionMethod='(null)', teamID='(null)'>
</IDEDistributionContext: 0x7f868c51ed70>
This error is a little decieving, thinking it might be a code signing error or some weird configuration issue with Fastlane. But if you look further into the error, you may see the following:
2016-10-03 13:01:58 +0000 [MT] Running /Applications/Xcode.app/Contents/Developer/usr/bin/ipatool '/var/folders/90/5stft2v13fb_m_gv3c8x9nwc0000gn/T/IDEDistributionThinningStep.s1x' '--json' '/var/folders/90/5stft2v13fb_m_gv3c8x9nwc0000gn/T/ipatool-json-filepath-RUCdRR' '--info' '--toolchain' '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr' '--platforms' '/Applications/Xcode.app/Contents/Developer/Platforms'
2016-10-03 13:01:58 +0000 ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]
2016-10-03 13:01:59 +0000 /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.13.1/lib/bundler/definition.rb:181:in `rescue in specs': Your bundle is locked to json (1.8.3), but that version could not be found in any of the sources listed in your Gemfile. If you haven't changed sources, that means the author of json (1.8.3) has removed it. You'll need to update your bundle to a different version of json (1.8.3) that hasn't been removed in order to install. (Bundler::GemNotFound)
from /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.13.1/lib/bundler/definition.rb:175:in `specs'
from /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.13.1/lib/bundler/definition.rb:235:in `specs_for'
from /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.13.1/lib/bundler/definition.rb:224:in `requested_specs'
from /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.13.1/lib/bundler/runtime.rb:118:in `block in definition_method'
from /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.13.1/lib/bundler/runtime.rb:19:in `setup'
from /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.13.1/lib/bundler.rb:99:in `setup'
from /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.13.1/lib/bundler/setup.rb:20:in `<top (required)>'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
2016-10-03 13:01:59 +0000 [MT] /Applications/Xcode.app/Contents/Developer/usr/bin/ipatool exited with 1
2016-10-03 13:01:59 +0000 [MT] ipatool JSON: (null)
So after alot of investigation, Fastlane reverts back to Mac OS system’s ruby for exporting. But the system ruby doesn’t have json 1.8.3 installed.
Solution: ⚓
To fix this issue, you just have to add a Script
step to run the following:
sudo /usr/bin/gem install bundler
This will install bundler on the system ruby and when the fastlane plugin calls bundle install then system ruby will also installed the neccessary dependencies
Works in local but not on Bitrise.io ⚓
An example error: ld: file not found ...
First of all restart your Xcode and try a new build.
If it doesn’t help try a clean build in Xcode.
If no error was displayed, try resetting your simulator(s).
Another problem could be your CocoaPods version.
Try updating your CocoaPods with the [sudo] gem install cocoapods
command.
Also make sure that your Podfile.lock
is committed into your repository,
as that’s the file which describes the exact Pod versions you use.
Without this Bitrise might download newer versions of Pods than the ones you use.
If there’s still no error try deleting the Pods
folder in your project and run the pod install
command again.
Finally, if none of the above helped, or you get an error with ld: file not found
on Bitrise,
and the path contains DerivedData
, with no other error message, like this:
ld: file not found: /Users/vagrant/Library/Developer/Xcode/DerivedData/...
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Try deleting the Xcode local cache. After that the error should be reproducible on your local machine.
You can delete the local Xcode cache using your Terminal:
rm -rf ~/Library/Developer/Xcode/DerivedData
Step hangs (times out after a period without any logs) ⚓
Check whether the scripts you use trigger any GUI prompts or popups, or wait for any user input. If a script waits for any user input it can cause the build to hang.
Most frequent sources of this issue:
Xcode
(command line tools) might hang if you try to build a Scheme which is not marked as shared. Usually it hangs right after you start anyxcodebuild
command (e.g.xcodebuild -list
orxcodebuild .. archive
).- Solution: Please make sure that you marked the Scheme as shared, and that you actually committed & pushed it into your repository. For more information please follow this guide: Xcode scheme not found.
- Your script tries to access an item in the OS X Keychain and the item is configured to ask for permission before access (this is the default type of Access Control configuration if you add an item - for example a password - to Keychain)
- You try to use a script or tool which requires permissions where OS X presents a popup
for acceptance (for example an
osascript
). You can use a workaround to allow the tool, without manual interaction by the user, for example by using https://github.com/jacobsalmela/tccutil.- For example to add
osascript
to the allowed OS X Accessibility list you can call tccutil from your script (don’t forget to include it in your repository or download on-the-fly):sudo python tccutil.py -i /usr/bin/osascript
- You can download the script from GitHub directly, for example:
wget https://raw.githubusercontent.com/jacobsalmela/tccutil/master/tccutil.py
.
- For example to add
- It can also be something in your app’s code.
An example: one of our user had a simple popup in the app, presented only at the first start of the app.
Once the popup was dismissed, the fact was stored in the app’s local storage, and the popup was not shown anymore.
They did dismiss the popup on their iOS Simulator, but on Bitrise every build runs in a brand new,
clean environment, which means that the simulator is in the same state as if you’d hit “Reset Content and Settings” in the iOS Simulator’s menu.
- Solution: try to clean out the simulator/emulator before you’d run the tests on your Mac/PC, to simulate the “first run” experience.
It might also be that the build does not hang, it just doesn’t generate any log output. This can happen for various reasons; you can find an example in case of an iOS library project.
CocoaPods frameworks signing issue ⚓
When you get an error something like this:
=== CLEAN TARGET Pods-Xxxxxxxxx OF PROJECT Pods WITH CONFIGURATION Release ===
Check dependencies
[BEROR]Code Sign error: No code signing identities found: No valid signing identities (i.e. certificate and private key pair) matching the team ID “(null)” were found.
[BEROR]CodeSign error: code signing is required for product type 'Framework' in SDK 'iOS 8.1'
This error is related to how CocoaPods expects code signing configurations for frameworks.
Solution 1: make sure that you upload/include/install a wildcard development provisioning profile ⚓
Usually this issue does not happen on your local Mac, and this is the reason why it does not: When Xcode performs an initial code signing (when it compiles the framework projects) it requires a certificate and provisioning profile which can be used for signing the CocoaPods framework projects.
On your Mac you most likely have your own Development certificate and Wildcard team provisioning profile, which is enough for Xcode to do the initial code signing for the framework projects.
So, Solution #1 is exactly this, upload these (Development identity/certificate (.p12) and the Team wildcard provisioning profile) to bitrise.io, and Xcode will work the same way as it does on your Mac. It’ll do an initial code signing with the development signing files, and then it’ll resign the archive when it exports the final IPA.
Solution 2: modifying code signing settings through Podfile
⚓
One of our beloved user sent us the following fix for this problem.
You should add the following script as a Post script
to your Podfile
:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['EXPANDED_CODE_SIGN_IDENTITY'] = ""
config.build_settings['CODE_SIGNING_REQUIRED'] = "NO"
config.build_settings['CODE_SIGNING_ALLOWED'] = "NO"
end
end
end
You can find a related CocoaPods issue and discussion at: https://github.com/CocoaPods/CocoaPods/issues/4331
You can also find possible solutions at CocoaPod’s official GitHub issues page, like this one: https://github.com/CocoaPods/CocoaPods/issues/3063.
Installing an Enterprise app: Untrusted Enterprise Developer
⚓
If you try to install an Enterprise distribution signed app you might get a popup when you try to run the app the first time, with the title Untrusted Enterprise Developer.
Starting with iOS 9 there’s no option to “Trust” the developer right from the popup.
You can Trust the developer and enable the app to run in iOS Settings:
- Open the Settings app on your iPhone or iPad
- Select the
General
category - Select the
Profile
option- starting with iOS 9.2 the option was renamed to
Device Management
instead ofProfile
- starting with iOS 9.2 the option was renamed to
- Tap on the Enterprise App option related to the app (the one mentioned in the popup)
- Tap the
Trust "The Developer's Name"
button - A popup will appear, tap on
Trust
again
You should now be able to run the app, and any other Enterprise app from the same developer.
No dSYM found ⚓
A couple of services require the dSYM to be present for deployment but you might have disabled the dSYM generation in your Xcode project.
Solution: ⚓
To generate debug symbols (dSYM) go to your Xcode Project's Settings -> Build Settings -> Debug Information Format
and set it to DWARF with dSYM File.
Invalid IPA: get-task-allow values in the embedded .mobileprovision don’t match your binary ⚓
Solution: Generate a new Certificate on the Apple Developer portal, not in Xcode.
Another solution might be: make sure you have the proper Signing Identity and Provisioning Profile in Xcode project settings for both the target and for the project.
No identity found ⚓
You uploaded the correct Provisioning Profile and Certificate pair, if you check the identity hash it matches with the one you can see in your Keychain, but you still get an error like:
22...D11: no identity found
Solution:
You probably have a configuration in your Xcode project settings which specifies
which keychain should be used for the build,
your scheme might include something like --keychain /../../xxx.keychain
code signing flag
and a CODE_SIGN_KEYCHAIN
variable set in the .pbxproj.
This might happen if you migrate your Xcode Bot based setup into Bitrise.
To fix the issue you have to remove the keychain selection configurations from your Xcode project settings.
No mobileprovision_path found / No embedded.mobileprovision found in … ⚓
Error: No embedded.mobileprovision found in ...
Or: No mobileprovision_path found
Possible solution 1: Skip Install
Xcode Settings ⚓
If you get this error in the Xcode Archive step you should check your Xcode Projects settings. Most likely you have the Skip Install
option set to YES
.
This should only be used for iOS frameworks, for iOS apps this should be set to NO
.
You can find the official documentation at: https://developer.apple.com/library/ios/technotes/tn2215/_index.html
- under the Xcode successfully archived my application, but the Archives Organizer does not list my archive section.
Possible solution 2: Installation Directory
Xcode Settings ⚓
Another cause of the issue can be if you (or a tool you use) modifies
the Build Setting -> Deployment -> Installation Directory
settings in your Xcode Project.
This can result in an .xcarchive
where your app is not generated
into the canonical Products/Applications
folder, but instead into a Products/Users/USERNAME/...
folder,
including the full absolute path of an intermediate build.
Solution: Please make sure that the Installation Directory
option is set to $(LOCAL_APPS_DIR)
(the default value when you generate a new iOS Xcode Project) or /Applications
(which is the default value of $(LOCAL_APPS_DIR)
) in your Xcode Project settings,
and that no build tool you use modifies this option.
Huge thanks to Antje, who reported this solution!
Duplicated Schemes ⚓
This is quite rare, but worth checking.
If you have multiple Schemes in your Xcode Project or Workspace with the exact same name,
when your project is built with Xcode’s Command Line Tools Xcode will select one of these Schemes/Configurations,
randomly. This can result in random build success / failure,
and if you check the Raw Xcode output you’ll see something like this:
xcodebuild: error: Scheme YOUR_DUPLICATED_SCHEME is not currently configured for the test action
when it fails.
This might also happen if you use CocoaPods and one of your Pods have the same name as your project.
In any way you can debug this by listing the available Schemes with Xcode’s command line tool.
In your project’s directory run: xcodebuild -workspace ./path/to/workspace/file -list
- or if you use a project file
instead of a workspace file: xcodebuild -project ./path/to/project/file -list
.
There should be no duplicated Scheme in the printed list.
You can run this command on your Mac and on bitrise.io too (just add it to a Script step), and ideally you should see the same list.
System dialog blocks the tests to run ⚓
(huge thanks to @AronI who reported this issue and the solution)
Error:
2016-09-08 07:30:34.535 XCTRunner[6174:22447] Running tests...\
07:30:35.399 XCTRunner[6174:22454] _XCT_testBundleReadyWithProtocolVersion:minimumVersion: reply received\
07:30:35.403 XCTRunner[6174:22453] _IDE_startExecutingTestPlanWithProtocolVersion:16\
2016-09-08 07:30:46.670 XCTRunner[6174:22447] Failed to background test runner within 10.0s.\
** TEST FAILED **\
\
}
Solution:
So to put it simply my problem was my UI Tests were failing.
The steps leading to the failure were the following:
- Unit tests run and pass. However a few of the unit tests are FBSnapshotTestCase tests which are kind of UI Tests but are still kept in the unit test bundle. They launch the app and compare screens with reference images of the screen.
- When a FBSnapshot TestCase is run it launches the app and launches a system alert dialog asking the user for permission for push notifications (this is just something that’s done in the AppDelegate in my app every fresh install).
- When the UITests start the permissions dialog is still visible and overlaying the screen.
- The application tries to access some XCUIElements but fails because of the overlaying permissions dialog and eventually fails
I resolved this by adding a check in the AppDelegate (where we fire the permissions dialog) if we are running in unit test mode and only asking for permissions when not running unit tests:
let unitTestMode = NSProcessInfo.processInfo().environment["XCTestConfigurationFilePath"] != nil
if !unitTestMode {
// IMPORTANT: Only ask permission for push notifications (or any notifications) when not running unit tests.
// The reason for doing this is that it's causing a build failure when the CI runs unit and UI tests.
// The build failure happens like this:
// 1. FBSnapshotTestCase unit tests run and open the application
// 2. The application asks user for the permission to enable push notifications
// 3. FBSnapshotTestCase finish but the permissions dialog is still visible
// 4. UITests start with the permissions dialog overlaying the screen
// 5.  BUILD FAILURE
askForNotificationPermission()
}
This is probably a pretty big edge case but just wanted to report this to you if someone might encounter this problem sometime. Hopefully this will come to use to someone.


Huawei Y9s Price and Specifications in Kenya
by TechweezThe Huawei Y9S is an interesting update to their Y series of smartphones. It is a small update to the Y9 Prime 2019 which they announced back in July, and it includes more RAM, new camera and a fingerprint scanner that is mounted elsewhere.
Here are its price and specifications.
| Display | 6.59" 2340 x 1080 LTPS display |
| Processor | Kirin 710F |
| RAM | 6GB |
| Internal storage | 128GB that can be expanded by an additional 512GB with a MicroSD card |
| Battery | 4000mAh battery |
| Primary cameras | 48MP f/1.8 main 8MP f/2.4 ultra wide 2MP f/2.4 depth sensor |
| Selfie camera | 16MP f/2.2 aperture |
| OS | EMUI 9.1 skin on top of Android 9 |
| Connectivity | Bluetooth 4.2 USB -C 2.0 10W charging |
| Colours | Breathing Crystal Midnight Black |
| Price | TBD |


{% extends "layout.html" %} {% block title %}Copy Paste Token{% endblock %} {% block content %}
This copy paste token is good for one use in the next five minutes.
{{ copy_paste_token }}
If you need to authenticate a Jupyter Notebook session (for example, a Terra Jupyter Notebook), copy and paste this into your notebook:
from hailtop.auth import copy_paste_login; copy_paste_login('{{ copy_paste_token }}')
If you need to authenticate from a terminal, copy and paste this into your terminal:
hailctl auth copy-paste-login "{{ copy_paste_token }}"


"HAMMATH "warm springs, one of the “fenced cities” of Naphtali (Joshua 19:35). It is identified with the warm baths (the heat of the water ranging from 136 degrees to 144 degrees) still found on the shore a little to the south of Tiberias under the name of Hummam Tabariyeh (“Bath of Tiberias”).
"HAMMATH "warm springs, one of the “fenced cities” of Naphtali (Joshua 19:35). It is identified with the warm baths (the heat of the water ranging from 136 degrees to 144 degrees) still found on the shore a little to the south of Tiberias under the name of Hummam Tabariyeh (“Bath of Tiberias”).


|
ARK2D
1.0
Game development framework for Windows, Mac OS X and Android.
|
Class for Polygon construction. Polygons should be convex for accurate collisions as there is no Triangulation code. More...
#include <Polygon.h>
Public Member Functions | |
| Polygon () | |
| Polygon (ARK::Geometry::Rectangle< float > *rect) | |
| Polygon (Vector2< T > *coords[]) | |
| Polygon (unsigned int numPoints) | |
| virtual void | addPoint (T x, T y) |
| virtual vector< Vector2< T > > * | getPoints () |
| virtual Vector2< T > * | getPoint (unsigned int i) |
| virtual void | setPoint (unsigned int i, T x, T y) |
| virtual void | add (T x, T y) |
| virtual void | rotate (float degrees) |
| virtual T | getMinX () |
| virtual T | getMaxX () |
| virtual T | getCenterX () |
| virtual T | getMinY () |
| virtual T | getMaxY () |
| virtual T | getCenterY () |
| virtual T | getWidth () |
| virtual T | getHeight () |
| virtual void | setLocation (T x, T y) |
| virtual void | setLocationByCenter (T x, T y) |
| virtual void | setLocationByAlignment (T x, T y, signed int alignX, signed int alignY) |
| virtual void | setXByCenter (T x) |
| virtual void | setYByCenter (T y) |
| virtual bool | contains (T x, T y) |
| virtual bool | collides (Shape< T > *s) |
| virtual void | resolve (Shape< T > *s) |
| virtual void | render () |
| virtual | ~Polygon () |
| Public Member Functions inherited from ARK::Geometry::Shape< T > | |
| Shape () | |
| virtual bool | isOffscreen () |
| virtual bool | isOffscreen (signed int minX, signed int minY, signed int maxX, signed int maxY) |
| virtual bool | isPartlyOffscreen () |
| Rectangle< T > * | asRectangle () |
| Circle< T > * | asCircle () |
| Polygon< T > * | asPolygon () |
| virtual | ~Shape () |
Additional Inherited Members | |
| Static Public Member Functions inherited from ARK::Geometry::Shape< T > | |
| static bool | collision_circleCircle (T x1, T y1, T r1, T x2, T y2, T r2) |
| static bool | collision_circleCircleVec (T *result, T x1, T y1, T r1, T x2, T y2, T r2) |
| static bool | collision_cubeCube (T x1, T y1, T z1, T w1, T h1, T d1, T x2, T y2, T z2, T w2, T h2, T d2) |
| static Vector3< T > | collision_cubeCubeVec (T x1, T y1, T z1, T w1, T h1, T d1, T x2, T y2, T z2, T w2, T h2, T d2) |
| static bool | collision_rectangleRectangle (T x1, T y1, T w1, T h1, T x2, T y2, T w2, T h2) |
| static Vector2< T > | collision_rectangleRectangleVec (T x1, T y1, T w1, T h1, T x2, T y2, T w2, T h2) |
| static bool | collision_rectangleLine (T x1, T y1, T w1, T h1, T x2, T y2, T x3, T y3) |
| static bool | collision_rectangleLine_pos (T *result, T x1, T y1, T w1, T h1, T x2, T y2, T x3, T y3, bool filled) |
| static bool | collision_circleLine (T x1, T y1, T r1, T x2, T y2, T x3, T y3) |
| static bool | collision_circleRectangle (T x1, T y1, T r1, T x2, T y2, T w2, T h2) |
| static bool | collision_lineLine (T x1, T y1, T x2, T y2, T x3, T y3, T x4, T y4) |
| static bool | collision_lineLine_pos (T *result, T x1, T y1, T x2, T y2, T x3, T y3, T x4, T y4) |
| static bool | collision_polygonLine (Polygon< T > *one, T x1, T y1, T x2, T y2) |
| static bool | collision_polygonPolygon_resolve (T *result, Polygon< T > *one, Polygon< T > *two) |
| static bool | collision_polygonPolygon (Polygon< T > *one, Polygon< T > *two) |
| static bool | collision_polygonRectangle (Polygon< T > *one, T x, T y, T w, T h) |
| static bool | collision_polygonRectangle (Polygon< T > *one, Rectangle< T > *rect) |
| static bool | collision_polygonRectangle_pos (T *result, Polygon< T > *one, Rectangle< T > *rect) |
| static bool | collision_polygonCircle (Polygon< T > *one, T x1, T y1, T r1) |
Class for Polygon construction. Polygons should be convex for accurate collisions as there is no Triangulation code.
|
inline |
|
inline |
|
inline |
|
inline |
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
Implements ARK::Geometry::Shape< T >.
|
inlinevirtual |
Implements ARK::Geometry::Shape< T >.
|
inlinevirtual |
Implements ARK::Geometry::Shape< T >.
|
inlinevirtual |
Implements ARK::Geometry::Shape< T >.
|
inlinevirtual |
Implements ARK::Geometry::Shape< T >.
|
inlinevirtual |
Implements ARK::Geometry::Shape< T >.
|
inlinevirtual |
Implements ARK::Geometry::Shape< T >.
|
inlinevirtual |
Implements ARK::Geometry::Shape< T >.
|
inlinevirtual |
Implements ARK::Geometry::Shape< T >.
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
Implements ARK::Geometry::Shape< T >.
|
inlinevirtual |
Implements ARK::Geometry::Shape< T >.
|
inlinevirtual |
Implements ARK::Geometry::Shape< T >.
|
inlinevirtual |
|
inlinevirtual |
Implements ARK::Geometry::Shape< T >.
|
inlinevirtual |
Implements ARK::Geometry::Shape< T >.
|
inlinevirtual |
Implements ARK::Geometry::Shape< T >.
|
inlinevirtual |
|
inlinevirtual |
Implements ARK::Geometry::Shape< T >.
|
inlinevirtual |
Implements ARK::Geometry::Shape< T >.


Faunus is an ongoing effort by various developers, contributors, and organizations. Along with this explicit list of contributors, Faunus is also possible because of the excellent open source products that compose Faunus. Please see a list of these projects in the Faunus pom.xml.
People
- Marko A. Rodriguez: Creator and primary developer for Faunus.
- Stephen Mallette: Provided support for GraphSON and Rexster connectivity.
- Matthias Broecheler: Provided support for Titan connectivity.
- Ketrina Yim: Created the Faunus logo.
Organizations
- Aurelius: Provided the development team and maintains the Faunus codebase.


To scrap recipes from
allrecipes.com
Call this link below by passing a recipe url in 'url parameter' see the example below :
* Allrecipes.com scraper
https://test1320.herokuapp.com/fromurl=[pass the recipe url here and go!!]
http://localhost:8080/fromurl?url=https://www.allrecipes.com/recipe/261303/julis-fool-proof-rib-roast


Simple result caching in R based on R.cache. The global environment is not considered when caching results simplifying moving files between multiple instances of R. Relies on more base functions than R.cache (e.g. cached results are saved using saveRDS() and readRDS()).
| Version: | 0.3.2 |
| Depends: | R (≥ 3.1.1) |
| Imports: | digest |
| Suggests: | knitr |
| Published: | 2017-04-09 |
| Author: | Augustin Luna, Vinodh Rajapakse |
| Maintainer: | Augustin Luna <lunaa at cbio.mskcc.org> |
| License: | LGPL-2 | LGPL-2.1 | LGPL-3 [expanded from: LGPL] |
| NeedsCompilation: | no |
| CRAN checks: | simpleRCache results |
| Reference manual: | simpleRCache.pdf |
| Vignettes: |
Using simpleRCache |
| Package source: | simpleRCache_0.3.2.tar.gz |
| Windows binaries: | r-devel: simpleRCache_0.3.2.zip, r-release: simpleRCache_0.3.2.zip, r-oldrel: simpleRCache_0.3.2.zip |
| OS X binaries: | r-release: simpleRCache_0.3.2.tgz, r-oldrel: simpleRCache_0.3.2.tgz |
| Old sources: | simpleRCache archive |
Please use the canonical form https://CRAN.R-project.org/package=simpleRCache to link to this page.


Replace parameter ‘oxgen’ in readStandardGenotypes and getCausalSNPs with ‘format’ - ensures proper specification of genotype format for all cases.
LiMMBo has been added as output format in savePheno and writeStandardOutput(LiMMBo format)
Input
Output
Variance components
Genotype simulation and kinship estimation: functions for genotype simulation and kinship estimation have been rewritten for significant speed-ups of the computation time benchmarking.
The effect size distributions of the shared effects are now modelled as the product of two exponential distributions (to yield an approximately uniform distributions) or the product of a normal distribution with user-specified parameters and a standard normal distribution.
The independent effects can now be specified to affect the same subset or different subsets of traits (via keepSameIndependent).
The overall number of traits affected by the effects can now be specified via pTraitsAffected.
correlatedBgEffects: the additional correlation between the traits can be specified by the user by providing an external correlation matrix.


{% extends "base_site.html" %} {% block title %} World Overview {% endblock title %} {% block stylesheets %} {{ super() }} {% endblock stylesheets %} {% block content %}
At what places in the world live the most happy people?
How much support does each country provide worldwide?
How different were the death rates in 2020 in comparison to the years before?
How high is the healty life expectancy worldwide?
In which country live the most generous people?
In which country peolpe feel that they have the most freedom to make choices for themself?
In which country people have the highest perception that there is a corruption going on?


This is my first 'article'. This is a bit different from the average thing I
plan to write about in that it doesn't have much to do with any particular field
I am interested and is more of a fun thing to try. It is interesting nonetheless
so here it is:
**INSERT HERE**


Developing a maintainable automation code is one of the keys to a successful test-automation
project. Test-automation code needs to be treated as production code and similar standards
and patterns should to be applied while developing this code.
While developing Selenium WebDriver tests, we can use the Page Object model pattern. This
pattern helps in enhancing the tests, making them highly maintainable, reducing the code
duplication, building a layer of abstraction, and hiding the inner implementation from tests.
By applying object-oriented development principles, we can develop a class that serves as an
interface to a web page in the application, modeling its properties and behavior. This helps
in creating a layer of separation between the test code and code specific to the page, by
hiding the technical implementation such as locators used to identify elements on the page,
layout, and so on. The Page Object design pattern provides tests for an interface where a test
can operate on that page in a manner similar to the user accessing the page, but by hiding
its internals. For example, if we build a Page Object test for a login page, then it will provide
a method to log in, which will accept the username and password and take the user to the
home page of the application. The test need not worry about how input controls are used for
the login page, their locator details, and so on.
Tests should use objects of a page at a high level, where any change in layout or attributes
used for the fields in the underlying page should not break the test.
This chapter covers recipes to build tests using Page Object model and related design.


CrimPapers
Articles published on 22 June 2020
On 22 June 2020, 4 new articles were published in 4 journals.
The Relationship Between Age and Suicidal Thoughts and Attempted Suicide Among Prisoners by Bryce E. Stoliker, Simon N. Verdun-Jones and Adam D. Vaughan
Characteristics of Drug‐facilitated Sexual Assault in Spain by José Manuel Quintana,
Álvaro García‐maroto,
olga Moreno,
antonio L. Manzanero
Patrolling the Borders: Experience With Multiple Out-Group Members Is Associated With the Own-Ethnicity Effect
Combatting Terrorist Propaganda by Peter Ford


Each turn lasts:
minutes
Mobbers
Add
Additional Settings
Fullscreen view appears after:
seconds
Snap window to edges of the screen:


Thrissur school arts festival gets under way
Four-day fete, featuring 6,125 students in 25 events, being held in six venues in Guruvayur
by Special CorrespondentThe 32nd Thrissur Revenue District School Art Festival began at venues in and around Guruvayur on Tuesday.
Thrissur district panchayat president Mary Thomas inaugurated the festival. Addressing the inaugural function, cine actor V.K. Sreeraman said students now tend to shrink to a world they create for themselves. “But art helps them turn their radar towards the outer world,” he said.
The four-day festival is being held at six venues such as Sree Krishna Higher Secondary School Guruvayur; Government Higher Secondary School, Chavakkad; GUPS, Guruvayur; Little Flower Girls Convent School, Mammiyur; LFUP School, Mammiyur; and Shikshak Sadan, Muthuvattur.
Arabic, Sanskrit festivals
In all 6,125 students will participate in 25 events in the four-day festival. There will be Arabic and Sanskrit festivals too. Students from 12 sub-districts are participating in the festival. Apart from off-stage events, contests in Bharatanatyam, drama, Mohiniyattam, English recitation, English speech, group dance and Vrindavadyam were held on the inaugural day.
Education Minister C. Ravindranath will address the valedictory on Friday.


Daily Postcard Creator
Choose Image
Replace image
Choose your font
❖
Indie Flower
◇
Dancing Script
◇
Long Cang
◇
Homemade apple
Choose your color
Share postcard


Δ.js is a library that contains anything you want (GitHub)
Try it bellow. (with mothafucking autocomplete!!)
Welcome to Δ.js
This is Δ.js
Welcome
This is Δ.js
Welcome to Δ.js
You can do anything at Δ.js
Anything at all
The only limit is yourself
Welcome to Δ.js
Welcome to Δ.js
This is Δ.js
Welcome to Δ.js
This is Δ.js, Welcome
Yes, this is Δ.js
This is Δ.js and welcome to you who have come to Δ.js
Anything is possible at Δ.js
You can to anything Δ.js
The infinite is possible at Δ.js
The unattainable is unknown at Δ.js
Welcome to Δ.js
This is Δ.js
Welcome to Δ.js
Welcome
This is Δ.js
Welcome to Δ.js
Welcome to Δ.js


Queries
A Query
is what is returned when calling many Model
methods. These Query
objects provide a chaining api to specify search terms, cursor options, hints, and other behavior.
Query#where
Lets you specify query terms with sugar.
query.where(path [, val])
path
is a valid document path. val
is optional. Its useful to omit val
when used in conjunction with other query methods. For example:
query
.where('name', 'Space Ghost')
.where('age').gte(21).lte(65)
.exec(callback)
In this case, gte()
and lte()
operate on the previous path if not explicitly passed. The above query results in the following query expression:
{ name: 'Space Ghost', age: { $gte: 21, $lte: 65 }}
Query#$where
Specifies the javascript function to run on MongoDB on each document scanned. See the MongoDB docs for details.
Model.find().$where(fn)
fn
can be either a function or a string.
Query#or
Specifies the $or operator.
query.or(array);
array
is an array of expressions.
query.or([{ color: 'blue' }, { color: 'red' }]);
Query#nor
Specifies the $nor operator.
query.nor(array);
array
is an array of expressions.
query.nor([{ color: 'daffodil yellow' }, { color: 'atomic tangerine' }]);
Query#equals
Assigns val
to the last path used in where()
.
query.where(path).equals(val)
// same as
query.where(path, val);
Query#gt
Specifies a greater than expression.
query.gt(path, val);
gt
is also one of the methods with extra chaining sugar: when only one argument is passed, it uses the path used the last call to where()
. Example:
Model.where('age').gt(21)
Results in:
{ age: { $gt: 21 }}
Query#gte
Specifies a greater than or equal to expression.
query.gte(path, val);
gte
is also one of the methods with extra chaining sugar: when only one argument is passed, it uses the path used the last call to where()
. Example:
Model.where('age').gte(21)
Results in:
{ age: { $gte: 21 }}
Query#lt
Specifies a less than expression.
query.lt(path, val);
lt
is also one of the methods with extra chaining sugar: when only one argument is passed, it uses the path used the last call to where()
. Example:
Model.where('age').lt(21)
Results in:
{ age: { $lt: 21 }}
Query#lte
Specifies a less than or equal to expression.
query.lte(path, val);
lte
is also one of the methods with extra chaining sugar: when only one argument is passed, it uses the path used the last call to where()
. Example:
Model.where('age').lte(21)
Results in:
{ age: { $lte: 21 }}
Query#ne
Specifies the $ne operator.
query.ne(path, val);
These methods have extra sugar in that when only one argument is passed, the path in the last call to where()
is used. Example:
query.where('_id').ne('4ecf92f31993a52c58e07f6a')
results in
{ _id: { $ne: ObjectId('4ecf92f31993a52c58e07f6a') }}
Query#in
Specifies the $in operator.
query.in(path, array)
This method has extra sugar in that when only one argument is passed, the path in the last call to where()
is used.
query.where('tags').in(['game', 'fun', 'holiday'])
results in
{ tags: { $in: ['game', 'fun', 'holiday'] }}
Query#nin
Specifies the $nin operator.
query.nin(path, array)
This method has extra sugar in that when only one argument is passed, the path in the last call to where()
is used.
query.where('games').nin(['boring', 'lame'])
results in
{ games: { $nin: ['boring', 'lame'] }}
Query#all
Specifies the $all operator.
query.all(path, array)
This method has extra sugar in that when only one argument is passed, the path in the last call to where()
is used.
query.where('games').all(['fun', 'exhausting'])
results in
{ games: { $all: ['fun', 'exhausting'] }}
Query#regex
Specifies the $regex operator.
query.regex('name.first', /^a/i)
This method has extra sugar in that when only one argument is passed, the path in the last call to where()
is used.
query.where('name.first').regex(/^a/i)
results in
{ 'name.first': { $regex: /^a/i }}
Query#size
Specifies the $size operator.
query.size(path, integer)
This method has extra sugar in that when only one argument is passed, the path in the last call to where()
is used.
query.size('comments', 2)
query.where('comments').size(2)
both result in
{ comments: { $size: 2 }}
Query#mod
Specifies the $mod operator.
var array = [10, 1]
query.mod(path, array)
query.mod(path, 10, 1)
query.where(path).mod(10, 1)
all result in
{ path: { $mod: [10, 1] }}
Query#exists
Specifies the $exists operator.
query.exists(path, Boolean)
These methods have extra sugar in that when only one argument is passed, the path from the last call to where()
is used.
Given the following query,
var query = Model.find();
the following queries
query.exists('occupation');
query.exists('occupation', true);
query.where('occupation').exists();
all result in
{ occupation: { $exists: true }}
Another example:
query.exists('occupation', false)
query.where('occupation').exists(false);
result in
{ occupation: { $exists: false }}
Query#elemMatch
Specifies the $elemMatch operator.
query.elemMatch(path, criteria)
query.where(path).elemMatch(criteria)
Functions can also be passed so you can further use query sugar to declare the expression:
query.where(path).elemMatch(function)
query.elemMatch(path, function)
In this case a query
is passed as the only argument into the function.
query.where('comments').elemMatch(function (elem) {
elem.where('author', 'bnoguchi')
elem.where('votes').gte(5);
});
Results in
{ comments: { $elemMatch: { author: 'bnoguchi', votes: { $gte: 5 }}}}
Query#within
query.within.box
query.within.center
todo
Query#box
todo
Query#center
todo
Query#centerSphere
todo
Query#near
Specifies the $near operator.
var array = [10, 1]
query.near(path, array)
query.near(path, 10, 1)
query.where(path).$near(10, 1)
all result in
{ path: { $near: [10, 1] }}
Query#maxDistance
Specifies the $maxDistance operator.
query.where('checkin').near([40, -72]).maxDistance(1);
results in
{ checkin: { $near: [40, -72], $maxDistance: 1 }}
Query#select
Specifies which subset of fields you want to return.
query.select('title name'})
// only _id, title, and name fields will be populated in your docs
You can also use object syntax:
query.select({ age: 0, contact: 0 })
// return everything but age and contact
Query#only
deprecated
Specifies a subset of fields to return. This is like select()
but this option only specifies which fields you want returned.
query.only('title name')
query.only('title', 'name')
query.only(['title', 'name'])
Query#exclude
deprecated
Specifies a subset of fields to return. This is like select()
but this option only specifies which fields you DO NOT want returned.
query.exclude('title name')
query.exclude('title', 'name')
query.exclude(['title', 'name'])
Query#slice
Retrieve a sub-range of elements in an array with the $slice method.
query.slice(path, val)
val
can be a Number:
query.where('tags').slice(5) // last 5 tags
query.where('tags').slice(-5) // first 5 tags
or an Array.
query.where('tags').slice([20, 10]) // skip 20, limit 10
query.where('tags').slice([-20, 10]) // 20 from the end, limit 10
slice
is also one of the methods with extra chaining sugar: when only one argument is passed, it uses the path used the last call to where()
. Example:
query.slice('tags', -5)
is the same as
query.where('tags').slice(-5)
Query#populate
Specifies the paths to be populated. See in-depth docs here.
Sorting
Query#sort
Sets the sort path and direction.
query.sort('path', 1)
query.sort('path', -1)
query.sort('path', 1, 'another.path', -1)
Query#asc
deprecated
Sorting sugar.
query.asc('path' [, paths])
Each string path
argument will be added to the sort ascending clause.
query.asc('title', 'name');
Is the same as
query.sort('title', 1).sort('name', 1);
Query#desc
deprecated
Sorting sugar.
query.desc('path' [, paths])
Each string path
argument will be added to the sort descending clause.
query.desc('title', 'name');
Is the same as
query.sort('title', -1, 'name', -1);
Options
Query#limit
The limit method specifies the max number of documents to return.
query.limit(20).skip(10)
Query#skip
The skip method specifies at which document the database should begin returning results.
query.skip(10).limit(20)
Query#maxscan
Limits the number of documents to scan.
query.maxscan(Number)
Query#snapshot
The snapshot method indicates the use of snapshot mode for the query.
query.snapshot(Boolean)
Query#batchSize
Sets the numer of documents to return per database query. For example, if we were qeurying for 10000 docs and streaming them to the client, we may want to limit the number of documents retrieved per cursor iteration to reduce memory consuption (all docs are held in memory during iteration). Setting batchSize
to, say, 100, would mean that the cursor would be pulling only 100 documents at a time from MongoDB.
query.batchSize(Number)
Query#slaveOk
Sets the slaveOk option or true
with no arguments.
query.slaveOk(Boolean)
query.slaveOk() // equivalent to query.slaveOk(true)
Query#tailable
Sets the tailable option or true
with no arguments.
query.tailable(Boolean)
query.tailable() // equivalent to query.tailable(true)
Tailable queries can only be used on capped collections, can only return documents in their natural order, and never use indexes. Unless the cursor dies, a tailable QueryStream will remain open and receive documents as they are inserted into the collection, much like the Unix tail -f
command.
var stream = Model.find().tailable().stream();
stream.on('data', function (doc) {
// do stuff
});
Query#hint
Specifies the hint option for MongoDB.
query.hint(indexName)
If your schema has an index like
Thing.index({ name: 1, title: 1 })
and you wanted to tell MongoDB to use that index for your query (in the off chance that MongoDB was not able to figure our that it should use it) you can give MongoDB a hint like so:
query.hint({ name: 1, title: 1}).exec(callback)
Query#comment
Sets the comment option.
query.comment(String)
Executing
Query#find
query.find(criteria [, callback])
Query#findOne
Sends the findOne command to MongoDB.
query.findOne([callback])
Query#count
Sends the count command to MongoDB.
query.count(callback)
Query#distinct
Casts field
and sends a distinct command to MongoDB.
query.distinct(field, callback)
Query#update
Casts the doc
according to the model Schema and sends an update command to MongoDB.
query.update(doc, callback)
All paths passed that are not $atomic operations will become $set ops so we retain backwards compatibility.
query.update({..}, { title: 'remove words' }, ...)
becomes
query.update({..}, { $set: { title: 'remove words' }}, ...)
Query#remove
Casts the query, then sends the remove command to MongoDB.
query.remove(callback)
Query#exec
Executes the query passing the results to the optional callback
.
query.exec([callback])
Typically used in chaining scenarios:
Model.findOne().where('points').$gt(1000).exec(function (err, doc) {
if (err) ...
});
Query#each
deprecated
A streaming cursor interface.
2.4.0 introduces the query.stream() method which is a more 'node-like' way of streaming records and provides better cursor management. It is recommended that you use query.stream in place of query.each.
query.each(callback);
The callback
is called repeatedly for each document found as its streamed. If an error occurs streaming stops.
query.each(function (err, user) {
if (err) return res.end("aww, received an error. all done.");
if (user) {
res.write(user.name + '\n')
} else {
res.end("reached end of cursor. all done.");
}
});
A third parameter may also be used in the callback which allows you to iterate the cursor manually.
query.each(function (err, user, next) {
if (err) return res.end("aww, received an error. all done.");
if (user) {
res.write(user.name + '\n')
doSomethingAsync(next);
} else {
res.end("reached end of cursor. all done.");
}
});
Query#stream
Returns a QueryStream for the query.
Model.find({}).stream().pipe(writeStream)
See the QueryStream docs for details.


Money Play. How should Red play 33?
pips Red=104 White=138
(CorrectAnswer= 0/0, ErrorScore= 0)
The key to this problem is to make sure that White can play a 5 so that he is forced to dismantle his anchor on Red’s 2-pt.
The best way to do this 7/1(2), making an additional inner board point. 15/12, 7/4, 7/1 is the second-best play but that is still an error. Everything else is a blunder or worse.
The best way to do this 7/1(2), making an additional inner board point. 15/12, 7/4, 7/1 is the second-best play but that is still an error. Everything else is a blunder or worse.
1. Cubeful 2-ply 7/1(2) Eq.: +1.155 0.900 0.384 0.012 - 0.100 0.006 0.000 2. Cubeful 2-ply 15/12 7/1 7/4 Eq.: +1.124 (-0.032) 0.896 0.363 0.012 - 0.104 0.007 0.000 3. Cubeful 2-ply 15/6 4/1 Eq.: +1.086 (-0.070) 0.891 0.340 0.010 - 0.109 0.009 0.000 4. Cubeful 2-ply 15/9 7/4(2) Eq.: +1.072 (-0.083) 0.890 0.324 0.013 - 0.110 0.007 0.000 5. Cubeful 2-ply 15/6 7/4 Eq.: +1.067 (-0.088) 0.883 0.336 0.014 - 0.117 0.009 0.000


后来我发现，世界真的很大。没有刻意的见面，就真的不会再见了。
This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.
Last updated 3 mins ago
生活就是这样吧，你最终还是会低下头
List-based media object
List-based media object
List-based media object


The Slate demos
The Slate comes with a set of demo scripts that show off some of its features. To run the demos, do the following:(You can run the test suites in a similar way. Change to the test directory and execute, for example,
- Change to the demo directory of the slate directory.
- Run the demo script with the demo name as an argument. For example,
./demo LabeledLineIf you don't have bash, then you can do this instead:
wish80and in the wish shell, doset argv LabeledLine source demo- To run all demos, just do
./demoor in wish,
source demo./test Frameor./testThe demos are:
- Animator
- A neat animation demo. The demo simply creates two items and moves and reshapes them. Note the way that the animation of the two items is synchronized at the end of each sequence.
- Binding
- A demo that shows how binding works on the presence of hierarchy. It brings up two items: one contains child items that do not handle events, and the other contains child items that handle events. (By dragging on the different items you will see how this works.)
- Grapple
- A demo that illustrates how to have selected items have grab-handles for reshaping. Drag the items to move them; drag the grab-handles to reshape them.
- LabeledLine
- A demo of the LabeledLine item type, which attempt to keep a label near the middle of a multi-segment line. Drag the blue grab-handles to move the lines around.
- Paper1
Paper2- A couple of demos that were used to create images for the '98 Tcl/Tk conference paper. You can drag the items around with the mouse.
- Selection1
Selection2- A couple of demos illustrating the configurability of the Selector interactor. All items except the arrow can be selected and dragged around. Drag on the background for rubber-banding selection; use shift-click and shift-drag to toggle items. In Selection1, a text item that is already selected will become editable when it is clicked again. In Selection2, a text item will be editable if clicked on, but will be moved if rubber-band-selected and then clicked on (the FrameMaker model).
- SmartLine
- A demo of the SmartLine item type, which reshapes itself so make a best-guess at how to connect to points with perpendicular lines. Drag the green diamond with the mouse to see the different shapes. The radio buttons at the bottom select the direction the line comes into the diamond.
- Widget
- A simple demo illustrating how the Slate and its interactors can be used to construct a custom widget. This is a very simple version of the Slider widget, and is kept short for inclusion in the Tcl/Tk '98 conference paper.
Copyright © 1998, The Regents of the University of California. All rights reserved.
Last updated: $Date$, comments to:johnr@eecs.berkeley.edu


Because Postico is made specifically for the Mac, it can take advantage of the many security features built into OS X.
Postico always tries to connect to PostgreSQL servers via an encrypted connection (SSL). If the server does not support SSL, Postico will show a warning. You should only connect without SSL if you are on a trusted network. Never connect without encryption when you are on a public network!
As an exception to this rule, Postico doesn't require encryption when connecting to ‘localhost’. (If your own computer is compromised, SSL won't help.)
Like your web browser, Postico will check the server certificate when connecting via SSL. It will check if the server certificate is signed by a trusted certificate authority. If the server uses a self-signed certficate, or the host name on the certificate doesn't match, Postico will show a warning dialog. You must then verify the certificate yourself (check if the finger print matches), and choose to connect or not. You can also choose to remember the certificate – then the server certificate will be added to your keychain and marked as trusted.
Postico also supports connecting via an SSH tunnel. This is especially useful when connecting to a database server behind a firewall. You can use SSH instead of SSL, or in addition to SSL. When connecting to a SSH server, Postico checks if the host key is in your known_hosts file. If it isn't, it will ask you to confirm the host key fingerprint, and remember the host key. It will not modify your known_hosts file. If there's a host key mismatch, Postico will refuse to connect. If the key changed because someone reinstalled the server, you have to update your known_hosts file to allow Postico to connect again.
Postico also supports using client certificates for authentication. By default, Postico will try to use the certificate and key stored at the path ~/.postgresql/postgresql.crt and ~/.postgresql/postgresql.key. You can also select a different certificate and key file per favorite:
If you check the “Save in Keychain” checkbox, Postico will store the passwords in your login keychain. The passwords are stored safely encrypted on your hard drive. This is much safer than storing the passwords in plain text. (Yes, there are apps that store passwords in plain text.) If an attacker wants to extract a password from the keychain, even if they steal your computer, they will still need your keychain password.
If you don't check the “Save in Keychain” box, Postico will remember passwords until you quit.
Postico is a “sandboxed” application. This means that it is isolated from other applications and has only limited access to your computer. Postico can connect to the internet (it wouldn't be a good database client if it couldn't) and it can read/write user selected files (eg. for exporting favorites). On the other hand, Postico has no access to stuff it doesn't need, like your emails or your camera.
Postico has the following sandbox privileges:
Sandboxing is mainly a damage containment technique. It reduces the risk from security vulnerabilities in the software. If an attacker finds an exploit in Postico, they cannot use it to take control of your computer because of the limits set by the sandbox.
Sandboxing also prevents you from malicious developers. A sandboxed application cannot simply send a copy of your address book to some server on the internet – unless it has the required privileges. (Unfortunately there is no easy way to check what privileges a sandboxed application has)


| Up | TOC | Index | |||||
| << 7 Included Tools | < 8.8 Pipe Input and Output | Up: 8 API Reference | 8.10 Multi-Tasking > | 9 Release Notes >> |
8.9 Pretty Printing
<IP_ADDRESS> PRETTY_DEFAULT
include std/pretty.e namespace pretty public constant PRETTY_DEFAULT
<IP_ADDRESS> DISPLAY_ASCII
include std/pretty.e namespace pretty public enum DISPLAY_ASCII
<IP_ADDRESS> INDENT
include std/pretty.e namespace pretty public enum INDENT
<IP_ADDRESS> START_COLUMN
include std/pretty.e namespace pretty public enum START_COLUMN
<IP_ADDRESS> WRAP
include std/pretty.e namespace pretty public enum WRAP
<IP_ADDRESS> INT_FORMAT
include std/pretty.e namespace pretty public enum INT_FORMAT
<IP_ADDRESS> FP_FORMAT
include std/pretty.e namespace pretty public enum FP_FORMAT
<IP_ADDRESS> MIN_ASCII
include std/pretty.e namespace pretty public enum MIN_ASCII
<IP_ADDRESS> MAX_ASCII
include std/pretty.e namespace pretty public enum MAX_ASCII
<IP_ADDRESS> MAX_LINES
include std/pretty.e namespace pretty public enum MAX_LINES
<IP_ADDRESS> LINE_BREAKS
include std/pretty.e namespace pretty public enum LINE_BREAKS
8.9.1 Routines
<IP_ADDRESS> pretty_print
include std/pretty.e namespace pretty public procedure pretty_print(integer fn, object x, sequence options = PRETTY_DEFAULT)
prints an object to a file or device using braces { , , , }, indentation, and multiple lines to show the structure.
Parameters:
- fn : an integer, the file or device number to write to
- x : the object to display or convert to printable form
- options : is an (up to) 10-element options sequence.
Comments:
Pass {} in options to select the defaults, or set options as below:
- display ASCII characters:
- 0 -- never
- 1 -- alongside any integers in printable ASCII range (default)
- 2 -- display as "string" when all integers of a sequence are in ASCII range
- 3 -- show strings, and quoted characters (only) for any integers in ASCII range as well as the characters: \t \r \n
- amount to indent for each level of sequence nesting -- default: 2
- column we are starting at -- default: 1
- approximate column to wrap at -- default: 78
- format to use for integers -- default: "%d"
- format to use for floating-point numbers -- default: "%.10g"
- minimum value for printable ASCII -- default 32
- maximum value for printable ASCII -- default 127
- maximum number of lines to output
- line breaks between elements -- default 1 (0 = no line breaks, -1 = line breaks to wrap only)
If the length is less than ten, unspecified options at the end of the sequence will keep the default values. For example: {0, 5} will choose "never display ASCII", plus 5-character indentation, with defaults for everything else.
The default options can be applied using the public constant PRETTY_DEFAULT, and the elements may be accessed using the following public enum:
- DISPLAY_ASCII
- INDENT
- START_COLUMN
- WRAP
- INT_FORMAT
- FP_FORMAT
- MIN_ASCII
- MAX_ASCII
- MAX_LINES
- LINE_BREAKS
The display will start at the current cursor position. Normally you will want to call pretty_print when the cursor is in column 1 (after printing a \n character). If you want to start in a different column, you should call position and specify a value for option [3]. This will ensure that the first and last braces in a sequence line up vertically.
When specifying the format to use for integers and floating-point numbers, you can add some decoration. For example: "(%d)" or "$ %.2f" .
Example 1:
pretty_print(1, "ABC", {}) {65'A',66'B',67'C'}
Example 2:
pretty_print(1, {{1,2,3}, {4,5,6}}, {}) { {1,2,3}, {4,5,6} }
Example 3:
pretty_print(1, {"Euphoria", "Programming", "Language"}, {2}) { "Euphoria", "Programming", "Language" }
Example 4:
puts(1, "word_list = ") -- moves cursor to column 13 pretty_print(1, {{"Euphoria", 8, 5.3}, {"Programming", 11, -2.9}, {"Language", 8, 9.8}}, {2, 4, 13, 78, "%03d", "%.3f"}) -- first 6 of 8 options word_list = { { "Euphoria", 008, 5.300 }, { "Programming", 011, -2.900 }, { "Language", 008, 9.800 } }
See Also:
print, sprint, printf, sprintf, pretty_sprint
<IP_ADDRESS> pretty_sprint
include std/pretty.e namespace pretty public function pretty_sprint(object x, sequence options = PRETTY_DEFAULT)
formats an object using braces { , , , }, indentation, and multiple lines to show the structure.
Parameters:
- x : the object to display
- options : is an (up to) 10-element options sequence: Pass {} to select the defaults, or set options
Returns:
A sequence, of printable characters, representing x in an human-readable form.
Comments:
This function formats objects the same as pretty_print but returns the sequence obtained instead of sending it to some file..
See Also:


A jQuery Mobile wrapper for Amber Smalltalk.
Make sure amber server started. UI are built by JqmCanvas. Tasks are stored html5 local storage.
Please see 'Jqm-ToDo' package for details


Civ5Save
A Civilization V save file object.
Static Method Summary
| Static Public Methods | ||
| public static |
Create a Civ5Save object from a file. |
Constructor Summary
| Public Constructor | ||
| public |
constructor(saveData: DataView) Create a Civ5Save object. |
Member Summary
| Public Members | ||
| public set |
Always peace. |
|
| public get |
Always peace. |
|
| public set |
Always war. |
|
| public get |
Always war. |
|
| public get |
Complete kills. |
|
| public set |
Complete kills. |
|
| public get |
Cultural victory. |
|
| public set |
Cultural victory. |
|
| public get |
Current era. |
|
| public get |
Current turn. |
|
| public get |
Game difficulty. |
|
| public set |
Diplomatic victory. |
|
| public get |
Diplomatic victory. |
|
| public get |
Domination victory. |
|
| public set |
Domination victory. |
|
| public get |
List of enabled DLC. |
|
| public get |
List of enabled mods. |
|
| public get |
Game build number. |
|
| public get |
Game mode: one of |
|
| public get |
Game pace. |
|
| public get |
Game version. |
|
| public get |
Lock mods. |
|
| public set |
Lock mods. |
|
| public get |
Map file. |
|
| public get |
Map size. |
|
| public set |
Max turns. |
|
| public get |
Max turns. |
|
| public set |
New random seed. |
|
| public get |
New random seed. |
|
| public set |
No barbarians. |
|
| public get |
No barbarians. |
|
| public set |
No changing war or peace. |
|
| public get |
No changing war or peace. |
|
| public set |
No city razing. |
|
| public get |
No city razing. |
|
| public get |
No cultural overview UI. |
|
| public set |
No cultural overview UI. |
|
| public set |
No espionage. |
|
| public get |
No espionage. |
|
| public set |
No happiness. |
|
| public get |
No happiness. |
|
| public get |
No policies. |
|
| public set |
No policies. |
|
| public get |
No religion. |
|
| public set |
No religion. |
|
| public set |
No science. |
|
| public get |
No science. |
|
| public set |
No world congress. |
|
| public get |
No world congress. |
|
| public set |
One-city challenge. |
|
| public get |
One-city challenge. |
|
| public get |
Pitboss. |
|
| public set |
Pitboss. |
|
| public get |
List of players as objects with their civilization and status as properties. |
|
| public get |
Policy saving. |
|
| public set |
Policy saving. |
|
| public set |
Private setting for multiplayer games. |
|
| public get |
Private setting for multiplayer games. |
|
| public set |
Promotion saving. |
|
| public get |
Promotion saving. |
|
| public set |
Raging barbarians. |
|
| public get |
Raging barbarians. |
|
| public get |
Random personalities. |
|
| public set |
Random personalities. |
|
| public get |
Science victory. |
|
| public set |
Science victory. |
|
| public get |
Starting era. |
|
| public get |
Time victory. |
|
| public set |
Time victory. |
|
| public get |
Turn mode: one of |
|
| public set |
Turn mode: one of |
|
| public get |
Turn timer enabled. |
|
| public set |
Turn timer enabled. |
|
| public get |
Turn timer length for multiplayer games. |
|
| public set |
Turn timer length for multiplayer games. |
Method Summary
| Public Methods | ||
| public |
toBlob(): Blob Write Civ5Save object to a blob. |
Static Public Methods
public static async fromFile(saveFile: File): Civ5Save source
Create a Civ5Save object from a file.
Reading data from a file needs to be done asynchronously; since the constructor cannot be async, this static factory is provided as an alternative way to instantiate a Civ5Save object from a file (https://stackoverflow.com/a/24686979/399105).
Params:
| Name | Type | Attribute | Description |
| saveFile | File | A Civilization V save file. |
Throw:
Invalid file signature. |
|
Error while parsing the save file. |
Example:
try {
let save = await Civ5Save.fromFile(saveFile);
...
Public Constructors
public constructor(saveData: DataView) source
Create a Civ5Save object.
As an alternative, a static factory method is available for more convenient instantiation from a file: fromFile
Params:
| Name | Type | Attribute | Description |
| saveData | DataView | The save file contents. |
Throw:
Invalid file signature. |
|
Error while parsing the save file. |
Public Members
public get culturalVictory: boolean source
Cultural victory.
Throw:
Error while parsing the save file. |
public get diplomaticVictory: boolean source
Diplomatic victory.
Throw:
Error while parsing the save file. |
public get dominationVictory: boolean source
Domination victory.
Throw:
Error while parsing the save file. |
public get enabledMods: Array source
List of enabled mods.
Throw:
Error while parsing the save file. |
public get gameBuild: string source
Game build number.
Note that for games created or saved before build 230620, this will return the game build that was used to create the save file. Starting with build 230620, this will return the game build that was last used to save the save file.
Throw:
Error while parsing the save file. |
public get gameMode: string | undefined source
Game mode: one of Civ5Save.GAME_MODES.SINGLE
, Civ5Save.GAME_MODES.MULTI
, or Civ5Save.GAME_MODES.HOTSEAT
.
Note that this will be undefined
if gameBuild is less than 230620 because the meaning
of its value is unknown. undefined
is used instead of null
because null
might incorrectly imply the value is
empty.
Throw:
Error while parsing the save file. |
public get gameVersion: string | undefined source
Game version.
Note that this will be undefined
if gameBuild is less than 230620. undefined
is used
instead of null
because older save files do not have a spot for this information (null
might incorrectly imply
the spot is there but empty).
Throw:
Error while parsing the save file. |
public get noChangingWarPeace: boolean source
No changing war or peace.
Throw:
Error while parsing the save file. |
public get noCultureOverviewUI: boolean source
No cultural overview UI.
Throw:
Error while parsing the save file. |
public get noWorldCongress: boolean source
No world congress.
Throw:
Error while parsing the save file. |
public get oneCityChallenge: boolean source
One-city challenge.
Throw:
Error while parsing the save file. |
public get players: Array<{civilization: string|undefined, status: number}> source
List of players as objects with their civilization and status as properties.
Civilization will be undefined
if gameBuild is less than 310700.
Status is one of Civ5Save.PLAYER_STATUSES.AI
, Civ5Save.PLAYER_STATUSES.DEAD
, Civ5Save.PLAYER_STATUSES.HUMAN
,
Civ5Save.PLAYER_STATUSES.NONE
.
Throw:
Error while parsing the save file. |
public get privateGame: boolean source
Private setting for multiplayer games.
Note that this will be undefined
if gameBuild is less than 310700 because it isn't
implemented. undefined
is used instead of null
because null
might incorrectly imply the value is empty.
Throw:
Error while parsing the save file. |
public get promotionSaving: boolean source
Promotion saving.
Throw:
Error while parsing the save file. |
public get ragingBarbarians: boolean source
Raging barbarians.
Throw:
Error while parsing the save file. |
public get randomPersonalities: boolean source
Random personalities.
Throw:
Error while parsing the save file. |
public get scienceVictory: boolean source
Science victory.
Throw:
Error while parsing the save file. |
public get turnMode: string source
Turn mode: one of Civ5Save.TURN_MODES.HYBRID
, Civ5Save.TURN_MODES.SEQUENTIAL
, or
Civ5Save.TURN_MODES.SIMULTANEOUS
.
Throw:
Error while parsing the save file. |
public set turnMode: string source
Turn mode: one of Civ5Save.TURN_MODES.HYBRID
, Civ5Save.TURN_MODES.SEQUENTIAL
, or
Civ5Save.TURN_MODES.SIMULTANEOUS
.
public get turnTimerEnabled: boolean source
Turn timer enabled.
Throw:
Error while parsing the save file. |
Public Methods
public toBlob(): Blob source
Write Civ5Save object to a blob.
Return:
| Blob | The save file with any changes. |
Example:
let downloadURL = window.URL.createObjectURL(save.toBlob());