On line donation Thank You

Question: I would like to customize the auto TY email that is generated to a donor once a donation is made. Can I do this? If so- can you please tell me how?
Thanks so much!
Answer: There are a few places that contribute to the TY email.
On the Receipt tab of the Contribution page config you can add a message there in "Receipt Message".
Also any 'pay later' instructions will also be inserted.
The main template that sucks those bits in and adds a lot of other bits is under > Administer > Communications > Message Templates then click on System Workflow Messages and look for eg Contributions - Receipt (on-line)

On line donation Thank You


Get index of selected tab in tabHost

Question: I'm trying to store the index of the currently selected tab in onSaveInstanceState so I can restore it. However the getCurrentTab apparantely gives me back the String I used in the etTabHost().newTabSpec, which I find a bit weird since the documentation says it returns an int and setCurrentTab also taking an int.
Does anyone know how I can get the index of my currently selected tab so I can restore it?
Comment: Are you sure that you invoke the TabHost.getCurrentTab()? It returns int. Probably you misplaced that with getCurrentTabTag()?
Comment: What android version do you use?
Comment: I'm certain, that's why I find it so weird.
Comment: I select 2.2 google from the list, but I don't think I'm using any specific features.
Answer: you are on the right way, use setOnTabChangedListener to get your selected tab.
public class MainActivity extends TabActivity {
    static TabHost mytabs;

    mytabs = getTabHost();
    mytabs.setOnTabChangedListener(new OnTabChangeListener() {
        @Override
        public void onTabChanged(String arg0) {
            Log.i("***Selected Tab", "Im currently in tab with index::" + mytabs.getCurrentTab());
        }
    });
...
...
...

Comment: I currently don't have access to my laptop with the code so I'll have to try this tomorrow, but why would it make any difference whether I used getCurrentTab in the onTabChanged event or in my onSaveInstanceState?

And thank you for your current answer.
Answer: You can use getCurrentTab() that returns index of tab start from 0.
Comment: That method belongs to which object? `something.getCurrentTab()` and what is something?
Answer: Use tabHost.getCurrentTab() to get Tab ...
tabHost= getTabHost();
tabHost.addTab(tab0); // TabSpec tab0=tabHost.newTabSpec(...
tabHost.addTab(tab1); //  TabSpec tab1=tabHost.newTabSpec

int current = tabHost.getTabHost() ;

Get index of selected tab in tabHost


What are some authentic resources to find research papers on Healthcare UX?

Question: I'm working on the digital ecosystem of Healthcare applications. Because of Covid-19 we are unable to reach out to actual users for primary research. So, it would be really helpful if someone can suggest good research papers which deal with the best practices in Healthcare UX, behavioral analysis of patients, etc
Comment: Not necessarily a direct answer, but UXdesign.cc's *Healthcare* tag has a lot of golden finds! It's mostly articles in there, but in some cases, the articles are backed by research studies.
Answer: Welcome to the UX Forum of StackExchange :)
Healthcare is a vast field and UX principles may vary depending on the purpose of your application and your audience (for example, designing a robot-surgeon user interface is very different from designing a medication database for patients).
Are you able to conduct remote research? E.g. surveys, remote usability testing, online interviews or through the phone - depending on what you want to investigate. Those could give you a more accurate picture of your product and/or audience.

SECTION 1 - As a general rule:

Keep the language/terminology and content used in your product clear and relevant to user-types; for users that are not medical-practitioners you might need to use simpler terminology. So if you've got more than one type of user - be careful of the different approaches you might need to apply. Don't assume that certain user-types should automatically know or understand certain things.
Make sure there is a clear structure and hierarchy; If a patient is looking for their prescription medication you wouldn't want to stress them out by not being able to intuitively find that section quickly and easily.
Based on the above, also allow shortcuts for frequently-used options (personalised).
Have a clear indication of actions a user can take and action status (e.g. disabled or pending).
Allow users to easily handle a mistake through appropriate feedback, or avoid it in the first place by providing helpful content. For example, a medical practitioner might want to edit a prescription they wrote, or might want to adjust a setting for a medical device, or other users might want to adjust their progress in a self-help app.
Keep accessibility in mind e.g. what medium might your audience employ to be able to use your app?
Avoid unecessary clutter - you don't want to overload your audience with options and choices, help with their decision-making (especially if they are an older demographic).
Be consistent (e.g. with icon representation, layout, visual and functional features, etc).

For additional principles look at Nielsen's 10 Usability Heuristics or Shneiderman's Eight Golden Rules.

SECTION 2 - Secondary research sources:
Because you have not provided a specific topic that you are interested in Healthcare, I'm listing below some research sources that I usually use when it comes to secondary research:

PubMed

A database on medical papers (it also provides publications on "user experience" research)
Semantic Scholar

A search engine for academic publications - the good thing about academic publications is that they get peer-reviewed, so they are usually considered more reliable on the quality of work and methods proposed.
Google Scholar

Another source to find scientific content and book previews on any topic of interest
The ACM Digital Library and IEEE Xplore

Other sources for discovering scientific and technical content.

Tips on how to approach a research journal:

First read the abstract, it gives you an overview of what to expect in the rest of the paper.
Next, read the discussion and conclusion sections so you can get a better understanding whether this is a paper that interests you.
Finally, if the content read in the above sections is something you want to explore further then you can go ahead and read it in its entirety (intro, background, methods, etc). Else, don't waste more time and move on to another research paper that might be closer to what you are looking for.

SECTION 3 - These might be of interest too:
A journal on the challenges faced by design researchers in healthcare
A book snapshot on users' age-factor when designing for e-health

Blog articles on the experience of some UX practitioners in Healthcare:
The UX process for healthcare apps
5 Design Principles for eHealth
My experience as a user experience researcher in healthcare

I hope the above are helpful, please comment on more specifics if you require additional assistance.
Best of luck,

C
Answer: As already referenced here, some of our works [1, 2, 3] have a deep comprehension of studying clinicians' behavior in the presence of intelligent agents. We deal with various UX studies and Human-Computer Interaction (HCI) research to understand the proper way concerning how to communicate the Artificial Intelligence (AI) outputs from AI models to clinicians. These AI models are trained under supervised information provided by clinicians from several medical institutions. It might also be interesting to look at here, where we describe some HCI and Healthcare perspectives in relation to UX studies.
References
[1] Francisco M. Calisto, Alfredo Ferreira, Jacinto C. Nascimento, and Daniel Gonçalves. 2017. Towards Touch-Based Medical Image Diagnosis Annotation. In Proceedings of the 2017 ACM International Conference on Interactive Surfaces and Spaces (ISS '17). Association for Computing Machinery, New York, NY, USA, 390–395. DOI: https://doi.org/10.1145/3132272.3134111
[2] Francisco Maria Calisto, Nuno Nunes, and Jacinto C. Nascimento. 2020. BreastScreening: On the Use of Multi-Modality in Medical Imaging Diagnosis. In Proceedings of the International Conference on Advanced Visual Interfaces (AVI '20). Association for Computing Machinery, New York, NY, USA, Article 49, 1–5. DOI: https://doi.org/10.1145/3399715.3399744
[3] Francisco Maria Calisto, Carlos Santiago, Nuno Nunes, Jacinto C. Nascimento, Introduction of human-centric AI assistant to aid radiologists for multimodal breast image classification, International Journal of Human-Computer Studies, Volume 150, 2021, 102607, ISSN 1071-5819, DOI: https://doi.org/10.1016/j.ijhcs.2021.102607


How Many Days After Skim Coat Can I Paint?

Question: We are skim coating our walls with joint compound. After that, Around how many days or hours, should I wait before applying real paint? Is there any best practice? I hear many drywall say its 3 days standard?
Comment: Skim coat with which product exactly? Can you post a picture of the product's instruction label?
Comment: Probably too late but my experience tells me that applying multiple thin coats is faster (to dry) and gets you better results.  This is an advantage for the DIYer.  Professionals will typically plan around going to another job for a few days.
Comment: **Don't forget a quality primer**.  There's a special hell for people who shortcut paint work, and you go there immediately.  It involves lots of laborious scraping and stripping. No fun.
Answer: Wait until it's completely dry.
It's not time-based. Time will vary with how thick the thickest part is, temperature, humidity, and airflow.
If in doubt, wait longer. If any part of the area feels cooler than the rest, that's usually because it's still evaporating moisture.
Comment: A darker spot in the wall can also be an indicator that it's not completely dry. This can be confirmed by touching it to see if it's cooler than the lighter areas, like the answer mentions.
Comment: If it's an option, a pva primer on new mud is slightly better than a regular primer.
Comment: You can accelerate drying with fans, higher temperatures, and/or lower humidity (e.g., air conditioning).
Comment: It's too late for now, but if you're planning to skim coat and you want to reduce the drying time, add some salt to your joint compound
Comment: @PhilFreedenberg I don't know about joint compound specifically, but I encountered gypsum mixes with slowing agents that you could totally dry out too fast for it to set completely. Is it safe to assume joint compounds pose no such risk?
Comment: I've been known to run a dehumidifier in the room.
Comment: is there an average rule of thumb also in days? 2 days I heard is drywall standard
Answer: Here is my answer to a similar question:
https://diy.stackexchange.com/a/250039/148888
1 rule of thumb? If your guessing, you'll probably be wrong.
Regarding moisture content of any substrate, you can obtain a moisture meter to test it, be it wood, concrete, or plaster.
This is one we use at our paint store. There are less expensive ones and you can find them at any home center.
Technical Service Bulletin on moisture content and different substrates.
I am a General Manager in a local owned, (multiple)paint stores for 21 years.


How to Change Default ASP.NET Login Control Database

Question: I'am making a dynamic website.
I'm using a Login Control but I can't use my database to store users.
It stores the users data in another database.
How can I use my own database to store these data.
Answer: You need to add the asp.net membership SPs and tables to your existing db. This 4guys article should have all you need to get it done.
In addition to using the runsql.exe tool you can run the sql scripts directly against your db to create the SPs and needed tables. Those scripts can be found WINDOWS\Microsoft.NET\Framework\v4.0.30319 assuming v4.


Would like some help with Logic Gates, Trying to use two inputs to create three outputs

Question: I'm totally lost and I've got no idea what to search to help find this. Basically I have two inputs [A,B] Where A represents the number 1 and B represents the number 2. I'm trying to make it so when 1 is "on" It turns on a little LED, and when two is "on" it turns a seperate LED on. I've got that, but I want to add an AND gate to make it so when both are on it turns a new LED on and the other two turn off. I've tried using a XOR gate & and gate but it can't differentiate the two signals, [1,2] Hopefully I can finally understand this. I'm currently using Logism to make it easy to see and understand. Thanks.
Comment: Think of this as 3 separate problems, one for each of the LEDs. Write a truth table for each one, giving the output for each combination of inputs.
Answer: Try this

simulate this circuit – Schematic created using CircuitLab
Comment: mine's prettier :P
Answer: A Simpler Way?
Given you haven't specified what rail the LEDs are connected to, it is actually possible to implement the solution showed by both @WhatRoughBeast and @RobhercKV5ROB (both are the same circuit effectively), using just three 2-input NAND gates:

simulate this circuit – Schematic created using CircuitLab
Basically the LEDs are wired up to act as inverters - if the output is high, then the LED is off. This allows all the gates to be transformed into NAND gates.

Fun facts:
This is also the most optimal way to design it using 7400/4000 series ICs (just one!).
It can also become the most optimal at the transistor level - by stripping away unused parts of the NAND gates, it could me made using just 5 NMOS transistors!
Answer: You can accomplish this easily with 3 AND gates & 2 inverters. Here's a schematic example:

The 3 AND gates turn on the LEDs. The 2 inverters turn off both the 'single' LEDs if the center 'dual' LED is lit due to 1=2=on
Comment: You beat me by 3 seconds. And mine is clearer.
Comment: @WhatRoughBeast yeah, I'm on my cell...no access to CircuitLab (& I'd have beaten you by 2 minutes if I didn't have to reboot the stinkin' thing to get the img to upload).
Comment: You do not need two inverters. Both of them are doing the same thing so one could be pulled out.


Connecting ACODE to Termux

Question: Hi guys I have successfully connected ACODE to termux using sftp from ACODE to termux SSH using openssh sshd and dropbear dropbear via generated password passwd and username whoami and it works. I've been trying to write nodejs codes generated outside storage directory since storage refuses to install expressjs or reactjs, but ssh crashes after writing few lines of code and I attempt to save the file.
Comment: I used rsync/cp to copy code back and forth from the storage a file editor can access to internal storage of the app (UserLAnd and not Termux, but same idea). Is there an actual question here? Because your post seems to only be a statement with your answer being a related statement which should've been edited into the question instead.
Answer: I was using localhost as my connection host that's why it was crashing.  I switched to inet IP and it worked. You can check your inet configuration with ifconfig on termux

Connecting ACODE to Termux


Why is my LoaderManager/CursorLoader combo not working correctly in displaying a database query in a ListView?

Question: I have been working all day on this, and have been trying to understand how it all fits together and reworking my code to fit together well. So I will show you what I have. There is no error, just blank.
MyAgendaLoaderManager.java:
public class MyAgendaLoaderManager implements LoaderCallbacks<Cursor>{

MyAgendaAdapter agendaAdapter;
Context mContext;
String date;

public MyAgendaLoaderManager(Context context, MyAgendaAdapter adapter, String date) {
    agendaAdapter = adapter;
    mContext = context;
    this.date = date;
}

@Override
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
    Uri baseUri = SmartCalProvider.CONTENT_URI;
    return new CursorLoader(mContext, baseUri,
            new String[] {"_id, event_name, start_date, start_time, end_date, end_time, location"},
            "WHERE date(?) >= start_date and date(?) <= end_date", new String[]{date, date}, null);
}

@Override
public void onLoadFinished(Loader<Cursor> arg0, Cursor arg1) {
    // TODO Auto-generated method stub
    agendaAdapter.swapCursor(arg1);
}

@Override
public void onLoaderReset(Loader<Cursor> arg0) {
    // TODO Auto-generated method stub
    agendaAdapter.swapCursor(null);
}

}

CalProvider.java:
public class SmartCalProvider extends ContentProvider {
public static final String AUTHORITY = "content://com.smartcal.eventprovider";
public static final Uri CONTENT_URI = Uri.parse(AUTHORITY);

private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "cal.db";

private SmartCalOpenHelper openHelper;
private SQLiteDatabase database;

@Override
public boolean onCreate() {
    openHelper = new SmartCalOpenHelper(getContext());
    return true;
}

@Override
public String getType(Uri uri) {
    return null;
}

@Override
public Cursor query(Uri uri, String[] projection, String selection,
        String[] selectionArgs, String sortOrder) {
    database = openHelper.getWritableDatabase();
    return database.query("events_info", projection, selection, selectionArgs, null, null, null);
}

@Override
public Uri insert(Uri uri, ContentValues values) {
    return null;
}

@Override
public int delete(Uri arg0, String arg1, String[] arg2) {
    return 0;
}

@Override
public int update(Uri uri, ContentValues values, String selection,
        String[] selectionArgs) {
    return 0;
}
}

And if it matters, heres the code that runs it in the main activity:
agendaAdapter = new MyAgendaAdapter(this, null);
MyAgendaLoaderManager loader = new MyAgendaLoaderManager(this, agendaAdapter, getChosenDate());

I just don't see how it blanks. Please keep in mind I intentionally left some stuff blank in the CursorLoader, and LoaderManager because I did not want to fill it all in to find out there was an error, so I was just testing to see if the initial list was display, and it was not. Any help figuring out what I did wrong would be much appreciated.
EDIT: Actually, now that I think about it, there is nothing that actually ties what I am doing to a specific list besides when my adapter makes the view that holds it. But that view isn't part of the regular layout. So maybe thats an error I have, unfortunately I have no idea how to do so.
Answer: You shouldn't instantiate a loader directly. You need to go through the activities getLoaderManager() method for it to be properly initialized and started. So from your activity call getLoaderManager().initLoader()/restartLoader() as needed.
Comment: In my case, because I have 3 parameters I pass it, how can I pass them with what you are saying? But it rings a bell while going through research on how to get this done
Comment: Actually, the 3rd parameter in `initLoader()`, how would one look like. I have no idea exactly how to do this. None of the examples show that being done. Just what I've done currently.
Comment: Have you read the official reference? The third parameter is a `LoaderManager.LoaderCallbacks`, typically you implement it in your activity or fragment, so you can just pass `this`. Check out the official docs: http://developer.android.com/guide/topics/fundamentals/loaders.html
Comment: Ok, so I have been looking at it. If I use `initLoader()`, how can I pass in the arguments I need for my `MyAgendaLoaderManager` class? And how can I ensure this is posted in my `ListView`. I have a `GridView` in my main activity as well, and I don't really see this being connected anywhere. Should I do `list.setAdapter(agendaAdapter)` in my main activity?
Comment: You can use the `Bundle args` parameter to pass arguments. Loader only return data, how you use it is up to you. If you are getting back a cursor, use a `CursorAdapter` and set it to your view as necessary.
Comment: @Andy  You wouldn't pass arguments TO your MyAgendaLoaderManager class FROM the initLoader() method.  It is the OTHER WAY AROUND - you instantiate MyAgendaLoaderManager with arguments in the constructor, and then pass these arguments into initLoader(int id, Bundle args,
            LoaderManager.LoaderCallbacks callback).


Chimney flue repair before installing liner for wood burning insert

Question: Planning on installing a wood burning insert in exsisting fireplace, the top of the flue at the chimney is spalling and was wondering if/options of repairing? the wood burning insert will use a stainless liner and its cap will be sealed to the top of the existing clay flue. Pictures included:
Answer: In my area a liner is required for a wood or pellet stove even if the flu is serviceable. I would have the cap made to protect what is left and the new liner will reduce any heat damage to those areas by being centered in the flu. Make sure to use solid or double wall if required, never use the flex pipe (looks like heavy dryer vent). that stuff really traps the creosote and there is no real way to clean it a standard brush just pokes them full of holes. I have heard stores in my area state that the flex line is legal but it is not here so even if the store offers flex at a couple of hundred dollars savings don't use it unless you want a chimney fire.
Comment: Flex is so inexpensive relative to rigid, I think it's meant to be disposable.


Are there any add-ons for Adobe Dreamweaver, or other applications which execute predictive PHP and/or Javascript?

Question: I'm wondering if there are any add-ons available for Adobe Dreamweaver or indeed, other applications, which execute predictive PHP and/or Javascript.
As far as I know, Adobe Dreamweaver has basic support for predictive PHP, with functions like include(), but not for the entire function library, or anywhere near that, and there's no support for predictive Javascript.
If anyone knows of any add-ons that support this or similar functionality, it would be greatly appreciated.
(Even better if it supports the jQuery and jQuery UI libraries as oppose to just Javascript).
:)
Answer: Adobe Dreamweaver is a great application for 'designing' websites.
If you want to write the technical implementation I would recommend an editor that is attuned to that. I personally use PHPStorm which is great for both PHP and Javascript, my collegues use NetBeans and Eclipse (with PHP/Javascript plugins). If you want something lightweight (no inspection) you could try Notepad++ or EditPlus.
Comment: Thanks a lot, I just downloaded the latest NeatBeans IDE, seems like it has all the features I'm looking for.


QField not using the CSV for value relation map only for one layer

Question: I created a QField project with four editable layers (details about the field shift, observed species, species movement, areas of interest), a few non-editable layers to serve as map guides (transects etc), online + offline map, and three csv files to serve as value relation for my layers (names of the colleagues, species behaviours and species names). All the layers are in gpkg format. The csv with species names contains two columns: the scientific name ("Nume stiintific") and the common name ("Nume comun").
These are the layers that I am using; the editable ones are the four ones at the top

For three of the four layers the value relations work well; I even managed to autocomplete the scientific names and common names to play off of each other. However, for the observed species layer the same technique doesn't work in QField, and only in QField. It's almost as if QField doesn't see the csv with species names, even though for the other layers the csv works fine.
The settings I used for the scientific name

The settings I used for the common name

This is what I see when I want to add an entry to the "specii" layer in QGIS Desktop; it works well

This is what I see when I'm in QField: a blank list of species. The only one visible is a result of adding an entry in QGIS Desktop

Like I said, the issue only exists within this one layer; all my other layers are able to read the csv correctly. I am using the same autocomplete functions for the other layers that work. I don't know what else to do; has anyone else encountered this?
Answer: Okay, so as all things like this go, after a few days of tinkering, and after posting this question I realised what the error was. Apparently even if you select the csv in the value map as the source your layer gets information from, for some reason the layer having the same name as the csv makes QField not recognise the csv. After creating another point layer with a different name QField finally started to use the csv.
So, to reiterate don't use the same name for two layers, even if in different formats, as QField will not recognise one of them as being different


How to do this effect in illustrator?

Question:
Does anyone know how to do this text effect in illustrator? That stroke type?
Comment: The wanted shape considered as 3D is not extruded planar text. The text seems like it's extruded radially, ie. the surface is cylindral. Illustrator hasn't that extrude mode, but pure 2D work isn't difficult in this case. At first write the text with black stroke and white fill. Then warp the text to the wanted form using envelope distort. Draw with pen the thickness as a new black shape.
Answer: Right now I am seeing a combination of three different elements.

I would create text similar to the one you see here. For my example, I am just using some bold text.

The type has been warped to form an arc Effect > Warp > Arc . So now you could take text and apply this text.

Now you need to Extrude your text so Effect > 3D > Extrude & Bevel . This step you need to play with the settings in order to rotate your 3D text the correct way.

4.Now what I found is that when you expand the appearance of your text Object > Expand Appearance, you can then play with the colors of the objects, and also you can add the stroke to the white portion of your text.

So if you were to play around with those three effects on a piece of text, I think that you could achieve a similar result.

Comment: Ah yeah you are right for some reason at first it looked like a dropshadow to me.
Comment: Warp > Arch instead of Arc will keep the sides vertical, more like the example

How to do this effect in illustrator?


Possibility to reinstal module without deleting old configuration for module permissions by term

Question: I tried to upgrade my site from Drupal 8 to Drupal 9. In this process I upgrade the module Permissions by Term to Version 3.0. The upgrade failed due to problems with extension of CiviCRM that were not covered by update report. So I turned back to D8. Afterwards I got the messages that the module Permissions by Term 3.0 was not compatible to D8 and thus disabled. So I downgraded that module by Composer successfully to version 2.31. After trying to reinstall it I got the error message that it couldn't be installed because of existing configuration. In the web I found several ways to delete old configurations, but of course I would like to keep it since I'm afraid I would have to review every page to set permissions again. Thus my questions: Is there any way to reinstall the module without deleting my old configurations (or was my fear wrong)?
Comment: Do you have any database backup from the time before the failed upgrade? If so, you should be able to get old configuration from there.
Comment: Thank you. Yes I do have a database backup. But it is a  little old, since it took some time for me to realize the problem. So I don't just want to restore the old version of the database. What I thought, wouldn't it be a good idea just to try do reactivate the module in the database (of course after a new backup)? Since it has never been deinstalled just automatically deactivated, it might just work again. Could this be done in the config table?
Answer: Module configuration files are stored in the module's config/install directory. When you enable the module, Drupal tries to install those configurations. If Drupal complains that the configurations already exist, then you can take the following steps:

Identify which configuration files Drupal is complaining about.

Move those configuration files out the module's config/install directory. It doesn't really matter where you move them to, but you're going to want to restore the files after everything is fixed so I suggest just moving them up one level into the config directory.

Try to install the module. Drupal won't find the module's default configuration files that you moved so it shouldn't complain any more.

If Drupal still complains, that means you missed a configuration, so repeat the above steps.

Restore the original configuration files - move them back into config/install.

Note that this is a workaround - not a solution. The module should be examined to ensure it properly removes its own configuration (if appropriate) when uninstalled, and that it declares the proper dependencies in its configuration, and that configurations which are not removed are defined as optional. Please file a bug report in the issue queue for that module so that this can be fixed for other users.
Comment: I'm not sure, if this is really a bug, since before downgrading to D9 I had forgotten to change the version of permissions_by_term in composer.json that I had manually set to ~3.0 , So if I remember correctly the message was that the module war disabled not deinstalled. Since I'm just a sitebuilder I'm not sure, what I could expect in a situation like that. If you still think I should file a bug report, I would do it.
Comment: In D7 you could disable a module, but in D8 and D9 there is no such thing as a "disabled" module - a module is either installed or not installed. I just now looked at the source code for that module and I think there is no bug in this case. The error seems to have happened because of the way you tried to downgrade the module (which isn't usually possible in Drupal ...). Normal install/uninstall of that module seems to be handled correctly by the module.
Answer: For me I solved the problem by deleting the row permissions_by_term.settings in the table config (after I had realized that there were only a few settings I would be easily able to restore). Afterwards I could install the module. I did get an "unexpected error", but after refreshing the site, the module was marked as installed. But my site still missed the page for the module's settings. This changed after I had deinstalled the module and the reinstalled it again.
In this process I lost the settings that had been stored in the tables permissions_by_term_role and permissions_by_term_user (that I could have saved, compare https://www.drupal.org/docs/contributed-modules/permissions-by-term), but since for me they were only few, it didn't matter. Thanks for your help.
Comment: Yes, removing the configuration from the database would work too, but I assumed from your question that you wanted to keep the previous settings. When you delete them from the database the module will install with its default settings - all the old settings will be lost. In my answer below, the old settings will be preserved.


How can you tell if a mangosteen fruit is ready to eat?

Question: I was able to get my hands on mangosteen, a dark purple fruit that is grown in Southeast Asia that is hard to find in the United States. It's got a hard shell on the outside that feels like a very unripe avocado with a very flat and sturdy stem. It's been sitting in my fruit bowl for about a week and the firmness has not changed and I don't smell any fragrance. How do I know if it's ripe enough to eat?
Answer: How do I know if a mangosteen is ripe enough to eat?
It is ripe when the rind is dark purple.

The color and feel of the mangosteen will help you know when it's
ripe. You'll know that a mangosteen is ripe when it feels a bit heavy
in your hand, the outer peel is smooth, purplish red in color, and
yields slightly with gentle pressure from your thumb.
Unripened or over ripened mangosteen will be hard (like, knock-knock
hard) on the outside and darker colored peel.

Source: Mangosteen FAQs – FruitStand.com

You can tell if it is ripe when it feels heavy for its size, is smooth and the skin is purple. Also, it will yield slightly to pressure when pressing the side.

Source: Mangosteen How To Eat It and What Does It Taste Like

You might want to know how to tell if mangosteen is ripe. When it
comes to this, you should note that the best way to tell this is by
observing the rind of this fruit.
The color for it should start to become purplish and it will
eventually become dark purple. Once this happens, the fruit is ripe
enough to harvest it and you can then start eating it.

Source: How To Tell If Mangosteen Is Ripe (Answered) - Miss Vickie
Answer: Generally, mangosteens are harvested when they are ripe as they don't tend to ripen once picked.
Comment: I wonder how they travel to the United States after being picked ripe and what the self life is. Akin to bananas - they are often picked when unripe and very green and sold in grocery story that way. The ripening happens after you buy and take them home.
Comment: Can't speak to the shelf-life, but ripeness is a word used to indicate peak readiness for consumption, while maturity describes it's readiness to be harvested. Some fruit and veg are harvested at the height of maturity and ripen over time, others are ripe when harvested. [Here](https://empressofdirt.net/fruits-ripen-after-picking/) is a link with some great examples of that!
Comment: @JMann - The shelf-life is short. That's part of why they're harder to find further from the equator. Everything I've read indicates that magosteen only goes "downhill" after being harvested. Time to eat!
Answer: It's difficult to judge mangosteen ripeness from the outside, but as a rule, they don't ripen off the tree, they just rot. (Which is also why mangosteen travel so badly: you can't just pick them raw and ripen them up at the destination.)  So it's best to eat them ASAP.
The best method to check ripeness is a practical test: twist off the "crown" of the fruit, place it between your palms with the top facing up, and squeeze gently but firmly, and it will cleanly pop in half if it's ripe.  If it goes "squish", it's overripe and likely gone bad.  If it's rock hard, it's either unripe or gone bad.  And it's commonly for a single batch bought at the same time to have fruit in all three stages.


How to close a child case automatically when a parent case is closed in CommCare

Question: Is is possible to automatically close the child cases associated with a parent case when the parent case closes?
Answer: If the project space as a Pro Plan or higher, you can now auto close the child case based on the parent case closure. It is now part of the standard drop-down options when you create an automatic case closure rule per the documentation found here.
Answer: It actually is possible to set up automatic child case closure based on the parent case closing, it just takes a few steps, and isn't exactly immediate:
1) when closing the parent case, set the case property close_case = 'yes'
2) go to the Data tab > automatically close cases, and set a new rule for the child case type with the filter parent/case_close = yes. You will have to specify the # of days after which the case should close if it hasn't been updated. Select the minimum (which I believe is 30). This means that when the parent case closes, the child case will close 30 days later.
3) to make sure these cases don't appear in your case lists, set the case list filter parent/close_case != 'yes' and/or close_case != 'yes' depending on the case type of the module.
It's a bit of a work around, but in the eye of the user, those cases will be gone as soon as the parent is closed, and on the back end, they'll be closed in 30 days.
Answer: It isn't possible to update child cases or their properties from a parent case module, so you're correct, it isn't possible to close them either.
You will instead need to close them with a form in a module of the child case-type.
Here are some options that I've used for different workflows.  None are perfect, but may work in your use case.

Don't allow the parent to be closed if it has any children.  For instance, don't let a household case be closed until after all members are closed.
Always use parent-child selection such that any child cases that are left open with closed parents cannot be seen by the user.  Then use an automatic case closure rule to clean up the child cases after some period of time.
Have a case list that only shows child cases whose parents are closed.  Train the users to periodically go there to clean it out.


How to calculate oblique photo scale?

Question: Is it possible to calculate oblique photo scale by given vertical photo scale ?
I mean is there any kind formula relation between them or maybe is it possible to calculate rough approximation of oblique scale ?
Comment: Thanks for replay. I am working on software which has to handle described situation. I do not work with aerial photographs, but it could be viewed this way. For example I have aerial images taken by camera whose optical axis is perpendicular to the ground and images taken by oblique camera. For the first case it is easy to find scale, but how  to approximate scale for oblique camera?
Comment: What data do you have?  Distance to center of photo?  Angle of the point of view?  You don't need much, because the scale in such photos varies, implying that a decent approximation of the scale near the center will be fine.
Comment: Thanks for replays. Sorry I am being dumb. I have all information about camera: focal length (f), angle of view, the height of the camera above the ground (H), etc. I know if camera is vertically positioned then photo scale is f/H. But if camera is oblique then scale varies. It would be great for me if I could approximate such scale with information about the distance from the camera position to the point on the ground whose photo scale is searched. It is not enough for me approximate whole image scale with one value.
Comment: What do you need that for? Is it for aerial images? In that case, you should look for information related to the keywords "orthophotography" and "photogrammetry".
Comment: Do you have access to [tools that perform orthorectification](http://gis.stackexchange.com/questions/9334/free-gis-software-that-can-orthorectify)?
Answer: Using GRASS GIS (OSGEO)
Ortho-rectification of oblique photographs
In projected location:
<code>get approximate camera position:

 d.where/d.what.rast:
        EAST:             NORTH:
       664194.71461534   5104463.03343466

 height: 450

  Pitch: 20
  Roll: 0
  Yaw (against north): -45
</code>
http://grass.osgeo.org/wiki/Orthorectification_digital_camera#Ortho-rectification_of_oblique_photographs
GIS GRASS
http://grass.osgeo.org/

How to calculate oblique photo scale?


How to make a countdown clock in Python on Sublime Text 2

Question: I'm looking to create a countdown clock using Python on Sublime Text 2. I've gotten it to the point where it will display:
01:00
00:59
00:58
...
00:00
However, I want the timer to be displayed only in one position so it looks like a continuous countdown. I've tried numerous ways but can't seem to get the line to be overwritten in Sublime. Here is the code I have so far:
def countdown(p,q):
    i=p
    j=q
    k=0
    while True:
        if(j==-1):
            j=59
            i -=1
        if(j > 9):
            print(str(k)+str(i)+":"+str(j), end='\r'),
        else:
            print(str(k)+str(i)+":"+str(k)+str(j) , end='\r'),
        time.sleep(1)
        j -= 1
        if(i==0 and j==-1):
            break
    if(i==0 and j==-1):
        print("Goodbye!", end="\r")
        time.sleep(1)
print(countdown(1,0))

Answer: As far as I know, sublime has no method to clear the console. The code given below will display the result you need in terminal.
import time,os
def countdown(p,q):
    i=p
    j=q
    k=0
    while True:
        if(j==-1):
            j=59
            i -=1
        if(j > 9):
            print str(k)+str(i) +":"+str(j),
        else:
            print str(k)+str(i)+":"+str(k)+str(j),
        time.sleep(1)
        j -= 1
        if(i==0 and j==-1):
            break
        os.system("cls") # or os.system("clear") if on linux
    if(i==0 and j==-1):
        os.system("cls")
        print "Goodbye!",
        time.sleep(1)
print countdown(1,0)

However, there is a hack given here. You can use print('\n'*100) to emulate the behavior of clearing of console.
Answer: The easiest method I can think of is to have your countdown running in the status bar. sublime.status_message() takes a string argument and displays it in the status bar at the bottom.
Also, instead of using time.sleep(), try using sublime.set_timeout(). Create a callback function that decreases the time by 1 second every time it's called. Then, use set_timeout(callback, delay=1000) to call it once a second (1000 milliseconds).
Finally, I'd strongly recommend you use semantic variables - name them according to what they are, instead of random single-letter designations. Python programs are meant to be easily readable and understood, and it's much easier to debug minutes, seconds, and counter instead of i, j, and k.
Answer: Just modified @Fabio Duran Verdugo code
            import time
            def countdown(p,q):
                k = 0
                a = ""

                while True:

                    if(q == -1):
                        q = 59 #default seconds for countdown
                        p -= 1 #decremental value for minutes

                    if(q > 9):
                       a = str(k) + str(p) + ":" + str(q) + "\n"
                    else:
                       a = str(k) + str(p) + ":" + str(k) + str(q) + "\n"
                    print (a)

                    time.sleep(1)
                    q -= 1
                    if(p == 0 and q == -1):
                        break

                if(p == 0 and q == -1):
                    print("Goodbye!") #print goodbye
                    time.sleep(10)    #timer before going to sleep (seconds)
            countdown(1,0) #format (minutes, seconds)

the code now doesn't print redundant lines(improved ui), made a few code documentation for easy flow up.
PS: I'm not taking any credit for this code :) happy learning guys
Answer: Concat the result and printing everytime the concat var.
import time

def countdown(p,q):
    i=p
    j=q
    k=0
    a=""
    while True:
        if(j==-1):
            j=59
            i -=1
        if(j > 9):
            a += str(k)+str(i)+":"+str(j) + " "
        else:
            a += str(k)+str(i)+":"+str(k)+str(j) + " "
        print (a, end='\r')
        time.sleep(1)
        j -= 1
        if(i==0 and j==-1):
           break
    if(i==0 and j==-1):
        print("Goodbye!", '\r')
        time.sleep(1)
countdown(1,0)


Do we have a citation ethics in science?

Question: Citations matter! Everybody knows this and Google Scholar (or Publish or Perish) shows it. Over the last years, I met people with different citation "ethics": Supervisors and professors require students to cite their own papers, even if they don't really relate or if there is a paper which would be more appropriate to cite. Journal reviewers nicely recommend accepting the paper for publication if only more two or three references (paper from the reviewer) are included. And even when an author cites a paper, there is often the question if the "idea" is cited or a specific "result" etc. E.g. there is a study showing that wrong citations are often inherited in papers that cite the misspelled citation, which indicates that the author didn't really read or access the paper and cites it only because of its general reputation. Similar to the IEEE Code of Ethics or ACM Code of Ethics, is there any Citation Code of Ethics?
Comment: Welcome to Academia.SE! As currently written, this reads somewhat like a rant, but there's a good question hidden in here. You may find that the question will be better received and you'll get better answers if you make it more objective and simply ask the question directly.
Answer: Citations have only one practical purpose: indicating to your readers where they can find the published material on which you built the work that's described in your paper (methods you used, hypotheses that your work support or contradict, etc.).
Everything else is just more noise in an already too noisy signal.
Citations should not be used to show deference to senior researchers, to increase citation metrics of a person's supervisor, nor to "grease the palms" of reviewers or falsely infer relevance to a given journal. Please refrain from doing such things, they hurt science.
Comment: I certainly agree with this, but I think the OP is asking if there are tools for preventing this from happening (rather than whether they should). And sadly, there's no denying that it's extremely common place.
Comment: @CliffAB Yes, I would be interested in tools or measures, or ways to report it.


Need a reference for a hadith about staying at the grave after burial

Question: I recently came across a quote on FB that was claimed as being a hadith. The summary of the quote was that after the janazah and burial of one's deceased parent, one should stay at their grave, reciting surahs and duas for them for such an amount of time that is equivalent to the time it takes a person to slaughter a camel, skin it and to cut and distribute its meat. Otherwise, the deceased feels as if they have been set adrift in the sea without any support.
I wanted to confirm whether this is actually a hadith or not, before forwarding it to others.
Answer: There is a hadith in Sahih Muslim wherein 'Amr bin Al-'As says to his son:

When you bury me, fill my grave well with earth, then stand around it for the time within which a camel is slaughtered and its meat is distributed so that I may enjoy your intimacy and (in your company) ascertain what answer I can give to the messengers (angels) of Allah.

However, this single narration doesn't indicate that this is a blessed act or something ordained by the prophet, simply a personal request by 'Amr bin Al-'As himself.
Comment: Thanks for your prompt reply brother. I too have come across it in Sahih Muslim but since it wasn't a quote of the Prophet (PBUH), I thought I should ask here. My thinking was that only quotes of the Holy Prophet are considered as hadith.
Answer: Yes there is only single narration of the COMPANION OF THE HOLY PROPHET .This was his personal wish and not saying of the Holy PROPHET .IT SAYS
'Amr bin Al-'as (May Allah be pleased with him) used to say:
"When you have buried me, keep standing near my grave till (for the time it takes to) a camel is slaughtered and its meat is distributed, so that I may feel your nearness and know what to reply to the angels sent by my Rubb."
[Muslim].
وعن عمرو بن العاص رضي الله عنه قال: إذا دفنتمونى، فأقيموا حول قبري قدر ما تنحر جذور، ويقسم لحمها حت أستأنس بكم، وأعلم ماذا أراجع به رسل ربي" ((رواه مسلم. وقد سبق بطوله)). وقال الشافعي رحمه الله: ويستحب أن يقرأ عنده شيء من القرآن، وإن ختموا القرآن عنده كان حسناً.
وقال الشافعي رحمه الله: ويستحب أن يقرأ عنده شيء من القرآن، وإن ختموا القرآن عنده كان حسناً.
RIAYDH SALHEEN
Book 7, Hadith 53
Answer: The hadith of 'Amr ibn Al-'Aas in Sahih Muslim is mawqoof, however it is presumable that he was acting on the teachings of the Prophet ﷺ rather than on his personal wishes. A hadith from the Prophet ﷺ which supports the general meaning of it includes:

عن عثمان بن عفان، قال: كان النبي صلى الله عليه وسلم، إذا فرغ من دفن الميت وقف عليه، فقال: استغفروا لأخيكم، وسلوا له بالتثبيت، فإنه الآن يسأل
Narrated Uthman ibn Affan:
Whenever the Prophet (ﷺ) became free from burying the dead, he used to stay at him (i.e. his grave) and say: Seek forgiveness for your brother, and beg steadfastness for him, for he will be questioned now
— Sunan Abi Dawud , كتاب الجنائز
Answer: Do you need a reference for a hadith about staying in the grave after burial?
In her will, Hazrat Zahra (PBUH) said to the Commander of the Faithful (PBUH): Do not go after you have buried me; Sit down and read the Quran. The corpse needs to read the Qur'an; Because the dead in such a situation need more than anything to have intercourse with the living.
Ref: https://rasanews.ir/fa/news/222566/%D8%A2%D8%AF%D8%A7%D8%A8-%D8%AF%D9%81%D9%86-%D8%A7%D9%85%D9%88%D8%A7%D8%AA-%D9%88-%D8%A7%D8%B9%D9%85%D8%A7%D9%84-%D9%BE%D8%B3-%D8%A7%D8%B2-%D8%A2%D9%86


How many different chains exist within a specific pdb file?

Question: More specifically, if we want to understand the different chains within a protein, is it enough to look at the fourth column of all the lines that start with "ATOM" in a pdb file, and see how many different chain identifiers exist there?
Answer: In the PDB format the lines with atoms can start either with ATOM or HETATM.
Chain ID is in column 22, i.e. it is 22nd character of a line that starts with ATOM or HETATM. (Programs that support 2-character chain IDs use columns 21-22 − it's a popular extension of the PDB format).
Yes, the number of different chain IDs is the same as the number of "chains" in the PDB file.
But note that the "chain" from the PDB format is not necessarily a real chain (polymer). It may be a bunch of water molecules or something else.
Comment: Thank you for your answer. It's less confusing now.


Why is my Electron Cash not detecting any servers?

Question: I am using Elecron Cash 2.9.4, and I opened the wallet by using the seed of my old (BTC) Electrum Wallet. I intended to get BCH.
Comment: Solved! It automatically tarted detecting after an hour or so, but one of the things I tried might have worked - updated Electron Cash, and restarted the Wifi.
Answer: I had a similar issue. The solution is easy.
Choose the "Server" tab, then randomly right click on a server and choose "Use this as server"

To make sure it works properly, please choose one of these: https://github.com/fyookball/electrum/blob/b32f10a/lib/network.py#L54-L58
I've reported the bug to Electron Cash' developer. Thank you for noticing it!
Answer: Try to update your Electron wallet in playstore. Be sure you're connected and have strong enough data or signal. Be sure it's not counterfeit, Lmo!!


What goes in a student success statement for a faculty application?

Question: One of my faculty position applications requires me to write a student success statement. I'm unsure what such a document should contain. Is this similar to a teaching statement?
Comment: I'm assuming this is for a faculty application?
Comment: Yes. (Updated the question)
Comment: Presumably what your ex-students are doing now (however, I fail to see how this would be valid for entry-level professor positions).
Comment: Is "Student Success Statement" same as "Statement of Teaching Philosophy"? I have been asked by only one school to attach this document to my application.
Answer: I would recommend e-mailing a contact in the department and asking them. I expect that the answer would be "It's just a teaching statement", although it could be different.
Another thing you might do is search the university's website for "Student Success" and try to get a sense of what particularly the university means by this buzzword. Keep in mind that this requirement was possibly imposed by higher administration, and the people reading and evaluating your application might or might not have high regard for the intent behind it.
Edit: (too late for OP, but perhaps still of interest) From what I can tell, when universities talk about "student success" they are usually talking about efforts to make sure that students don't fall through the cracks. So in a "student success statement" you might talk about how you've gone out of your way to help students who are struggling.
Answer: This would be a (vague) request for some sort of documentation of your students' meeting some (ill-specified?) goals either within your course itself or in subsequent coursework... With "success" being defined in who-knows-what way. Most people would have no serious way to "prove" that they'd "benefited their students",... even while, perhaps, being asked to prove that.
It is never clear to what extent such unlikedly-to-be-truly-documentable claims play a role in hiring and such. Higher [sic] administrators obviously will love such concepts, because they make good PR, while are so vague that they could be used as excuses for fairly capricious acts.
E.g., it may well be that the hiring department is simply required by the central administration to request such a thing, even while fully realizing the dubiousness of its sense. Would not be at all surprising.


I have a Oneplus 2. The bluetooth and wifi stopped working. It also does not get detected when connected to my laptop. Just keeps getting charged.

Question: This issue started after the phone fell in water. I had given the phone for servicing. Still no use.
Comment: Most likely there's irreparable water damage to some components inside the phone.  Who handled the service - was is official Oneplus warranty/repair department, or a 3rd-party?
Answer: The phone has water damage and these effects are permanent.
There isn't much else I can say.


One word for an exactly opposite situation

Question: Is there a word to describe an exactly opposite situation? In context, if someone describes a situation in which he found himself, and I tell him I found myself in the exactly opposite situation, what word would describe this? Let's assume irony may be involved in some way, but that is not the word I am looking for.
Comment: Antithesis? Look up its synonyms, as well.
Comment: An 'antithetical' situation? Incidentally, though people use the term 'exact opposite' I think it ought to be 'exactly opposite', otherwise I would feel a need to hyphenate, as in 'an exact-opposite situation'. But I already hear @Fumble Fingers tut-tutting at this.
Comment: I'm afraid your question is unclear. I'll attempt to clarify it, but if I'm way off base, just let me know. Don
Comment: Why do you think there might be a single word for this?
Comment: how about **"opposite"**?
Answer: Since you have used the word irony, I am tempted to say that two exactly opposite situations are not ironic; they are coincidental. Perhaps an example would help.

Frieda: "My dog Willie ran away this week, and I haven't been able to locate him."
Sally to Freida: "Hmmm. I suppose I shouldn't tell you, but just this week I became the owner of a rescue dog from the Humane Society!"

Here are two "exactly opposite situations," but they do not necessarily involve irony, just an unfortunate coincidence. One situation is sad; the other is joyful. One person lost a dog, and the other person "found" a dog.
Perhaps commenters @WS2 and @Kris, above, are on the right track in suggesting that what you describe as "exactly opposite situations" are in some sense "antithetical situations."
Is there a single word besides antithetical, though? That's a tough one. Two words would work just fine, but one word? Not so much! How about

a weird coincidence?

an incredible coincidence?

a surprising coincidence?

a sad coincidence?

a snafu? (s ituation n ormal, a ll f ouled u p)

bad karma/good karma?

bad luck? (A thief steals a hundred times in a row without getting caught, and you, when you impulsively and for the first time in your life pick up a donut in a store and eat it without paying for it, get caught and arrested for shoplifting! Now those two situations are in a sense "opposite" and tinged with irony, especially if you have a reputation for being an upstanding, law-abiding citizen.)

Unless you provide a clearer context for your two "opposite situations," I'm at a loss as to what to call them, at least in one word.


Which one is the correct way to say autumn wind chimes 秋風鈴 or 秋の風鈴

Question: I would like to know how to say "autumn wind chimes." Is it aki fuurin 秋風鈴  or aki no fuurin 秋の風鈴? Or perhaps is it both correct? If it depends on the context I just wanted to say autumn wind chimes as if I said spring wind chimes or summer wind chimes it's not part of any other sentence.
Comment: And in what kind of context would you say spring wind chimes or summer wind chimes? Would there be any particular reason for using those phrases instead of saying wind chimes in spring/summer or wind chimes for spring/summer?
Comment: I just wanted it for a title, it's not part of any sentence , example: music title/video title/logo title,does it help? I like how just the word "autumn wind chimes" as a title sounds, I feel "wind chimes in autumn" or "wind chimes of autumn"  is not the same ...meaning, but Im unsure which one is the correct one for just "autumn wind chimes" and googling it I saw there is a song that is called "aki fuurin " without the particle No. But in the lyrics they also say aki no fuurin. So i was confused and wondered when to use    aki fuurin and aki no fuurin . I hope this help
Answer: In English, "Hollywood movie" makes perfect sense, but "Houston movie" is a puzzling expression when used on its own. Likewise, saying 秋風鈴 without の implies you are thinking it is a fixed idea, as a compound word. Generally speaking, 秋風鈴 sounds puzzling because it is not a word Japanese people have recognized.

Why isn't 日本料理 written as 日本の料理?
赤ずきん vs. 赤い頭巾 (grammar)
-的 adjectives modifying nouns without な
the omission of an implied "の" creates the appearance of a 四字熟語{よじじゅくご}?

So, if you used 秋風鈴 without any context, people are going to ask you, "What's a 秋風鈴?" If it is the title of a video with a story, and you can confidently state your definition of 秋風鈴 in one or two sentences, then go ahead and use it for that meaning in your work. If it's a new product name (like "Apple Watch" or "Cup Noodle"), it makes sense, too. On the other hand, if there is no special meaning and it's just some wind chime you saw in autumn, you usually should not omit の.
There is indeed a song titled 秋風鈴 by Maiko Fujita. By intentionally giving a little puzzling title, I feel the lyricist is trying to make you guess the metaphorical meaning of 秋風鈴 here. The audience ask themselves "What is a 秋風鈴?", and they would notice the implication here is "something left behind", or "someone forgotten", because a wind chime is basically a symbol of summer.
Comment: Thank you for the reply! It helps me understand more!,  I wanted it to be more for a title of a logo or brand  but i want to kept the meaning of it being " wind chimes that are still seen in autumn  even if summer is over",I think it explains it better now what i mean?, Your reply helped me explain it better !  so for what I understand " Aki fuurin" doesn't keep the meaning and it's more to the person to come up with a meaning.  Is it ok to use " Aki no fuurin"  to kept the meaning of  " wind chimes that are still seen in autumn  even if summer is over" when it's said? . Thank you again!
Comment: @user54624 秋の風鈴 and 秋風鈴 are both valid titles, and essentially mean the same thing in this song. But with the latter, people are more likely to notice the symbolic meaning, because 秋風鈴 strikes people as "unfamiliar".
Comment: Ok! Thank you for all the help !


Should I worry about US F-1 visa if I am from Russia?

Question: I am a Russian citizen who was admitted to Ph.D. program in the US university starting this fall. I never before had any US visa and currently waiting for I-20 form from my university. I am become more and more nervous, because political relationship between Russia and US are rather tense now with diplomats deportation and consulates closing. May current situation affect my chances of getting F-1 visa as foreign graduate student?
Answer: Diplomatic disputes rarely prevent citizens of any country from obtaining a US F-1 visa (see details on the most recent ban which is subject to a court injunction) but you might face extra delays in the process.  Given that you still have 4-5 months before your program starts, you will most likely get the visa in time even if there is a delay.  You can mitigate the risk of delays by applying early.  Ask your university if they can expedite issuing your I-20 and tell you its SEVIS ID so that you can submit your F-1 visa application right away.
Answer: Assuming that the current climate doesn't degrade into outright war,  you should be fine. The most sanctions that US had taken so far against Russian individuals in recent years have been towards very few people in absolute numbers (less than 1000). Beyond such sanctions, it's all speculation, but in a country under the rule of law, it's not like the president or the person in charge of visas in an embassy can just wake up one day and decide to put Russian nationals at the bottom of the pile. The US department of state, which issues visas, and the US department of homeland security, which oversees entry into the country, are both obligated to follow the rule of law; outside of emergency situations, changes need to go through Congress which is usually very slow.
Consider for example that it has been difficult for the current president to use executive orders to enforce a ban on the entry of citizens from some countries that he argued posed a security risk; judges have barred its enforcement multiple times for various reasons.
In other words I wouldn't read too much into the current news cycle in terms of your ability to visit on an F-1 visa.
Comment: The most recent executive order banning people from a few mostly Muslim countries, plus a couple of non-Muslim countries, *is* actually in force now. But that shouldn't cause any problems for a Russian graduate student.
Comment: Thanks, amended answer accordingly to also try to make it more future proof


OSH Park setup for KiCad

Question: Anyone know the exact setup needed to send KiCad files to OSH Park? Specifically how to set the trace widths correctly?
Comment: The [specs](http://oshpark.com/pricing) say that minimum trace width is 6 mils.  Is the question "How to set my traces to 6/8/10 mils in KiCad"?
Comment: Actually the specs are quite a bit more than just that - clearances, edge of board rules, drill rules, etc!
Comment: Yes to both :P Mostly, what different do I have to do from EAGLE? I would use EAGLE, but my boards are too big for the free version and cannot afford the paid version.
Comment: Also see http://oshpark.com/guidelines
Answer: I am not sure this is a good question for EE.SE, but here's how to do this in KiCad:

From the Design Rules menu select Design Rules
Choose the Global Design Rules. There you can modify available trace widths/vias.

The Custom Track Widths lists the available track widths (i.e. outside of those defined for specific net classes [see below]. And the custom via sizes lists lists all the vias you want to have available while routing.  Thus, in the following dialog box trace widths of 10 mils, 15 mils, 20 mils, and 32 mils are made available for selection while routing, but only one via size.

You can also

Set the vias/trace widths for specific net classes in the Net Classes Editor tab of the (Design Rules) dialog.  This is a PITA, however, since KiCad makes it a bit difficult to assign sensible names to net classes (as far as I know). You can, however, edit all the files by hand (all KiCad files are text files), so with some regular expressions, this might be a way to go.

After doing the initial setup, the second toolbar, on the left, will offer choices of trace widths and vias you can use for routing, as in the following picture:
Answer: I use this page to setup my KiCAD. This is OSH Park's own documentation for KiCAD.
OSH Park design rules for KiCAD
Comment: While this link may answer the question, it is better to include the essential parts of the answer here and provide the link for reference.  Link-only answers can become invalid if the linked page changes. - [From Review](/review/low-quality-posts/104227)
Comment: @AdamHaun: Given that this is OSH Park's own reference material on the matter, it's a very good answer.
Comment: @DaveTweed Fair enough, I suppose.

OSH Park setup for KiCad


Difference between catch: and subscribeError:

Question: In ReactiveCocoa, what's the difference between the subscribeError: method vs. catch:? Why would you want to return a signal in catch:?
Answer: -subscribeError: actually subscribes: this is the end of the line. Whereas -catch: simply transforms a signal into a new signal (and doesn't actually subscribe). Think of the signal like a program. When you -subscribeError:, you are telling the computer "I want to run this program, but I only want to hear back from you if it errors out." When you -catch:, you are saying "I've got this program that may throw an error, and I want to make a new one based on the old one that handles that error differently."
The reason you have to return a signal in -catch: is that it is not simply for squelching errors: it is actually for responding to errors. Once the original signal has errored out, it's as good as gone: if you want the resultant signal to keep going after a failure, you have to do give a new signal in -catch:.
Examples of what you could do in -catch::

Return [RACSignal empty] if you want to fail silently and not throw an error.
Return [RACSignal error:err] if you want to rethrow the error after doing something, or perhaps you want to transform the error.
Return some other signal that you want to subscribe to in case the first one errors out.
Comment: @terrylewis Be careful with threading there, however. Since a signal's values may be delivered on an arbitrary thread, your `-catch:` block may run there as well.
Comment: Good explanation. launching an AlertView from within `-catch:` and returning an empty signal in order to "squelch" the error seems like a common point of entry for error handling with RAC, at least in my experience.


What happens if bad lawyer advice causes irreparable harm?

Question: Let's reduce the question to Canadian lawyers in immigration practice. Bad advice can cause loss of residency, lifetime ban and more. What's your recourse?
Answer: If the lawyer was negligent, you can sue
Note that negligence requires considerably more than just being wrong . Professional advice (including legal advice) requires assessment of risks and strategies and advising the client of these so they can make informed choices about their options. There is plenty of scope to make mistakes, however, a lawyer who does what a reasonable lawyer (not an expert lawyer) should do has not been negligent.
You cannot sue for anything done or said by the lawyer in court - this is a public policy thing to stop disappointed litigants from suing their lawyer if they lose.
Comment: @chx Also worth noting that legal malpractice cases are won, sometimes for very large stakes, sometimes. This is part of my own practice and puts food on table.
Comment: @chx neither does your doctor - good luck with your self-performed surgery. You pay lawyers for the same reason you pay doctors, not because they know everything and never make mistakes but because they know more than you do and are massively less likely to make mistakes than you are.
Comment: Thanks for confirming my experience that paying a lawyer in important questions is a waste of money as they take no responsibility for their advice.


Using :Explore without closing current buffer

Question: If I open the file explorer with :Explore and choose a file, it replaces the buffer I had open before and I have to open it again. How do I avoid this?
Comment: In `:help netrw-explore` they mention several other commands to explore your files. Among them are `:Texplore` which opens the file explorer window in a new tab instead of using your current window. There are other variants you could try, like `:Sexplore` (horizontal split) or `:Vexplore` (vertical split). When your cursor is on a file, you can also hit `o`, `v`, or `t` to open it in a horizontal split, vertical split or tab.
Comment: @saginaw That's worth an answer.
Comment: I use this as refrence cheat sheet for netrw. https://gist.github.com/t-mart/610795fcf7998559ea80
Answer: In :help netrw-explore they mention several other commands to explore your files.
Among them are :Texplore which opens the file explorer window in a new tab instead of using your current window.
There are other variants you could try, like :Sexplore (horizontal split) or :Vexplore (vertical split).
When your cursor is on a file, you can also hit o, v, or t to open it in a horizontal split, vertical split or tab.
Also p will open a window in which you can preview the file under the cursor, but the focus will stay in your netrw buffer meaning you can go on exploring your filesystem without needing to do a <C-w>w or <C-w>p.
Answer: I usually use a following flow when I want to open the file (while keeping the current file):

Make a new vertical / horizontal split
Open netrw from in the new split
Select another file

As mentioned in comments there are also :Sexplore and :Vexplore which do the split and open netrw at once, but I don't use them. I don't use :Explore too.
Instead I use vim-vinegar which is a slim, but very useful improvement on top of netrw. You just press - any time you need the file explorer.
Also I highly recommend to check Drew Neil's Oil and Vinegar post.
So my flow above is to pre-split the screen as I want it to be and then select the new file.
Comment: Accepted this answer 'cause `vim-vinegar` does exactly what I want.
Answer: If you have netrw v153 or later, you'll have :Lexplore available.  This command opens a window on the side of the display, and <cr> will cause editing to occur in window#2 (by default).  You can change the default window to be used for editing by using the C map or by changing the variable g:netrw_chgwin.
Answer:
How do I avoid this?

You don't. The previous buffer is still there, you only need to pull it from the buffer list:
:b <Tab>

Answer: I can't explain this but if you put Netrw in tree style with:
let g:netrw_liststyle=3

netrw don't close the current buffer, it open in a new buffer in the same window when you use :Explore
Answer: Use :Ve or :Se to open the file explorer in a new vertical or horizontal split, respectively.


How does SQLParameter prevent SQL Injection?

Question: What exactly is going on in the background that makes it so SQLParameter prevents SQL Inection attacks in a .NET Parameterized query?  Is it just stripping out any suspect characters or is there something more to it?
Has anyone out there checked to see what actually gets to SQL Server when you pass malicious input?
Related: Can you use a SQLParameter in the SQL FROM statement?
Answer: Basically, when you perform a SQLCommand using SQLParameters, the parameters are never inserted directly into the statement. Instead, a system stored procedure called sp_executesql is called and given the SQL string and the array of parameters.
When used as such, the parameters are isolated and treated as data, instead of having to be parsed out of the statement (and thus possibly changing it), so what the parameters contain can never be "executed". You'll just get a big fat error that the parameter value is invalid in some way.
Comment: You'll also get an error for attempting to use variables in places where SQL (and TSQL in this case) doesn't support variables.  IE: `FROM` clause, a single parameter to represent a comma separated list in an `IN` clause, etc.
Comment: I don't think this answers the question. You can call a stored procedure using SQLParameter class, which passes params to the procedure, yet doesn't call sp_executesql. What happens with the parameters values in a concatenated sql string?
Answer: A easier-to-understand, and a more general answer goes like this:
Imagine a dynamic SQL query:
sqlQuery='SELECT * FROM custTable WHERE User=' + Username + ' AND Pass=' + password
A simple SQL injection would be just to put the Username in as ' OR 1=1--
This would effectively make the SQL query:
sqlQuery='SELECT * FROM custTable WHERE User='' OR 1=1-- ' AND PASS=' + password
This says select all customers where their username is blank ('') or 1=1, which is a boolean, equating to true. It then uses -- to comment out the rest of the query. So this will print out the entire customer table, or enable you to do whatever you want with it.
Now parameterized queries do it differently, with code like:
sqlQuery='SELECT * FROM custTable WHERE User=? AND Pass=?'
 parameters.add("User", username)
 parameters.add("Pass", password)
where username and password are variables pointing to the associated inputed username and password.
Now at this point, you may think, this doesn't change anything at all. Surely you could still just put into the username field something like Nobody OR 1=1'--, effectively making the query:
sqlQuery='SELECT * FROM custTable WHERE User=Nobody OR 1=1'-- AND Pass=?'
And this would seem like a valid argument. But, you would be wrong.
The way parameterized queries work, is that the SQL query is sent as a query, and the database knows exactly what this query will do, and only then will it insert the username and passwords merely as values. This means they cannot affect the query, because the database already knows what the query will do. So in this case it would look for a username of Nobody OR 1=1'-- and a blank password, which should come up false.
This isn't a complete solution though, and input validation will still need to be done, since this won't affect other problems, such as xss attacks, as you could still put javascript into the database. Then if this is read out onto a page, it would display it as normal javascript, depending on any output validation. So really the best thing to do is still use input validation, but using parameterized queries or stored procedures to stop any SQL attacks.
Source: http://www.lavamunky.com/2011/11/why-parameterized-queries-stop-sql.html
Answer: "Parameter collections such as SqlParameterCollection provide type checking and length validation. If you use a parameters collection, input is treated as a literal value, and SQL Server does not treat it as executable code. An additional benefit of using a parameters collection is that you can enforce type and length checks. Values outside of the range trigger an exception. This is a good example of defense in depth."
http://msdn.microsoft.com/en-us/library/ff648339.aspx
Answer: When using parameterized queries, the attack surface is reduced to monkeying around with the parameters.
Do use SqlParameters, but don't forget about overflow, underflow and unvalidated parameters. For example, if the method is "proc buy_book (@price money)", a malicious attacker would attempt to trick the application to running with @price set to 0.01, or attempting to get the application to do something interesting by submitting something that causes an overflow. Sql Overflows tend not to be interesting (i.e. they just cause exceptions, you are unlikely to be able to write to adjacent memory)


What are some sources of information on dividend schedules and amounts?

Question: How do I know exactly when companies are paying out their dividend and how much? Is there a good source to look it up and compare companies?
Answer: I second the Yahoo! Finance key stats suggestion, but I like Morningstar even better:
http://quote.morningstar.com/stock/s.aspx?t=roic
They show projected yield, based on the most recent dividend; the declared and ex-dividend dates, and the declared amount; and a table of the last handful of dividend payments.
Back to Yahoo, if you want to see the whole dividend history, select Historical Prices, and from there, select Dividends Only.
http://finance.yahoo.com/q/hp?s=ROIC&a=10&b=3&c=2009&d=00&e=4&f=2012&g=v
Answer: There are dividend newsletters that aggregate dividend information for interested investors.
Other than specialized publications, the best sources for info are, in my opinion:

The investor relations sections of corporate websites.
Yahoo Finance / Google Finance
Answer: You can use Yahoo! Finance to pull this information in my use. It is listed under Key Statistics -> Dividends & Splits.
For example here is Exxon Mobile (XOM): Dividend Payout Information
Answer: I have 3 favorite sites that I use.
http://www.nasdaq.com/symbol/mcd/dividend-history - lists the entire history of dividends and what dates they were paid so you can predict when future dividends will be paid.
http://www.dividend.com/dividend-stocks/services/restaurants/mcd-mcdonalds/ - this site lists key stats like dividend yield, and number of years dividend has increased.  If the next dividend is announced, it shows the number of days until the ex-dividend date, the next ex-div and payment date and amount.
If you just want to research good dividend stocks to get into, I would highly recommend the site seekingalpha.com.  Spend some time reading the articles on that site under the dividends section.  Make sure you read the comments on each article to make sure the author is not way off base.
Finally, my favorite tool for researching good dividend stocks is the CCC Lists produced by Seeking Alpha's David Fish.  It is a giant spreadsheet of stocks that have been increasing dividends every year for 5+, 10+, or 25+ years.  The link to that spreadsheet is here: http://dripinvesting.org/tools/tools.asp under "U.S. Dividend Champions".
Answer: Yahoo Finance is definitely a good one, and its ultimately the source of the data that a lot of other places use (like the iOS Stocks app), because of their famous API.
Another good dividend website is Dividata.com.  It's a fairly simple website, free to use, which provides tons of dividend-specific info, including the highest-yield stocks, the upcoming ex-div dates, and the highest-rated stocks based on their 3-metric rating system.  It's a great place to find new stocks to investigate, although you obviously don't want to stop there.  It also shows dividend payment histories and "years paying," so you can quickly get an idea of which stocks are long-established and which may just be flashes in the pan.
For example:

Lastly, I've got a couple of iOS apps that really help me with dividend investing: Compounder is a single-stock compound interest calculator, which automatically looks up a stock's info and calculates a simulated return for a given number of years, and Dividender allows you to input your entire portfolio and then calculates its growth over time as a whole.
Compounder:

Dividender:

The former is great for researching potential stocks, running scenarios, and deciding how much to invest, while the latter is great for tracking your portfolio and making plans regarding your investments overall.


Ho can I put my custom made emoji designs into keyboard on phone?

Question: I have created custom emoji's and need to set them us as keyboard in my iPhone.
What should I save the files as
and
how do I export them to a keyboard and upload it to my phone?
Answer: To have your custom emoji's appear on your phone, you will need to create a custom font that includes them, and install that font on your phone.  But since these emoji's are not part of the Unicode standard, nobody else will ever be able to see them (unless they also install your font), and you will not find them on any normal keyboard.  To input them and see them on your own phone you would have to also create a custom keyboard which accesses the codepoints of the custom font where they are placed.
Perhaps a better approach would be to create graphics which you could place in emails or messages.


Most effective technique of blocking Youtube on OpenWrt routers?

Question: What is the most effective technique for blocking Youtube on OpenWrt (a Linux-based firmware) based routers?
Answer: You may be able to find an opkg that can block based on toplevel domain, but youtube has all kinds of domains. To get a blacklist, you can ssh to your openwrt router, type tcpdump -ni br0 dst port 53 | tee log and pop open a browser only connecting to youtube. Only have one LAN/WLAN client online when you do this. The file 'log' will contain all outgoing dns requests from interface br0, in cleartext. That could work as a base for a blacklist, but you have to trim it, and be careful to remove stuff like 'update.windows.com' and similar domains.
Alternately, you may find a parental control app in the opkg repo, and do it automagically from there.
Comment: Awesome recommendation, and you are right, it is not that simple.
So far I tried adding this to hosts file on OpenWrt router:

`127.0.0.1 localhost
127.0.0.1 www.youtube.com
127.0.0.1 m.youtube.com
127.0.0.1 youtube.com
127.0.0.1 youtu.be
127.0.0.1 ytimg.com
127.0.0.1 l.google.com
127.0.0.1 googlevideo.com`

This now prevent laptop users to access youtube, but mobile users with youtube app still use it without any problems...
I'll definitely use your advice to try to build a better list.
But I like this hosts file approach, it is clean and simple.
Comment: That's some sneaky kung-fu:) I always did blacklists based on the IP of the domains (they change due to round-robin, so takes a while to get them all :/), but never thought of nulling them in /etc/hosts. You don't need to change that (at least for the laptop users), the simplest solution that works is the best solution. DNSMASQ can do the rest. Now tcpdump a mobile youtube session and let us know what you come up with
Comment: I captured traffic with tcpdump while IOS (iPhone) Youtube app was streaming - https://dl.dropboxusercontent.com/u/184632/youtube.pcap
Does this help anyone to figure out what is going on?
Comment: Just view DNS requests (outgoing to port 53 udp) with wireshark. It's got a filter wizard. Tcpdump's equivalent is 'tcpdump -nr file.pcap dst port 53'. Should be after the A? field.
Comment: Using dnsmasq approach seams to work only for desktop clients using web browsers as youtube clients.

Using dnsmasq approach fails for mobile users which have youtube apps installed on their mobile phones. It looks like mobile youtube app has hardcoded list of youtube servers and it is using them directly without even doing a dns lookup.
Comment: Block these addresses with iptables.
Answer: One approach is to use hosts file and to put any hostnames that browsers on desktops use or apps on mobile phones to access Youtube.
Currently this is how my current OpenWrt hosts file looks like:
127.0.0.1 localhost
127.0.0.1 www.youtube.com
127.0.0.1 m.youtube.com
127.0.0.1 youtube.com
127.0.0.1 youtu.be
127.0.0.1 ytimg.com
127.0.0.1 l.google.com
127.0.0.1 googlevideo.com

This now prevent laptop users to access youtube, but mobile users with youtube app still use it without any problems...
So next step is to build up a blacklist of all domains and IPs that Youtube apps use, so this answer will be updated.
For now this approach seams clean and simple and that is why I like it.
But if apps use google dns or have internal list of Youtube IPs then this approach will fail and only way forward will be to use iptables to drop app traffic with blacklisted Youtube IP.
Comment: And this will not block if your user is just a little smart and use an open dns like Google `184.108.40.206` and `18.104.22.168`
Comment: Diff this list into hosts: youtube.com ytimg.com ytimg.l.google.com s.ytimg.com youtube.l.google.com googlevideo.com i.google.com
Comment: You could do the same way we did on small offices of our company: Make a "NAT", for every dns query(udp/53) to be redirected to the DNS you want(this case, openwrt itself). We did this to force that, even fixed addresses on DNS of Windows clients be redirected to our internal DNS through OpenVPN ;)
Comment: @nwildner true, do you have some other suggestion what would help? But as most users are mobile phone users this would still work for 95% of users, and for my situation that is actually just fine.
Answer: A fairly straightforward way to block certain sites such as Youtube is to use one of OpenWrt's adblock packages.

It is possible to use the adblock package and its associated Luci web package to block Youtube by just adding the domains e.g.
www.youtube.com
m.youtube.com
youtube.com
youtu.be
ytimg.com
l.google.com
googlevideo.com

to the local blacklist (Services menu-> Adblock->Advanced->Edit blacklist) and saving it,then going back to the adblock overview and clicking refresh.You can easily disable it by unchecking the blacklist under the Blocklist Sources and clicking refresh again,or by just disabling the whole adblock plugin.
Comment: I'm sure that this doesn't work on mobile devices because they use hard coded IP addresses, so youtube on android and ios works even when you block/blacklist domains you suggested.
Comment: The YouTube app doesn't use hard coded IP addresses as the addresses change dependent on where and when it is used - It also uses DNS for load balancing. If you run Wireshark/tcpdump you can see the DNS queries issued by the app. However, it's possible it is using some additional domains in your region which you would need to add to the blacklist.
Answer: Another approach would be to block the YouTube IP range, based on a similar question custom firewall rules can be generated:
/etc/config/firewall
config rule
    option name     Block-YouTube-22.214.171.124/16
    option src      lan
    option family   ipv4
    option proto    all
    option dest     wan
    option dest_ip  126.96.36.199/16
    option target   REJECT

And so on for all IP ranges, be sure to restart the firewall service to apply the changes.
# /etc/init.d/firewall restart


sheaves and cosheaves

Question: I am struggling hard to understand the pushforwards and pullbacks of cosheaves. Are they also cosheaves? And what are quasicoherent cosheaves? Is there anything like coquasicoherent cosheaves? Please tell me a good refernce on theses topics, if there is some.
Comment: What is a cosheaf?
Comment: By the way, the "dual" of an equalizer is not necessarily a coequalizer, so the dual of a sheaf need not be a cosheaf. For example consider the structure sheaf of Spec(Z). If dual means Hom(-,Z) then the dual vanishes on every proper open subset.
Comment: A cosheaf is a covariant functor defined on the open subsets of a space that satisfies a right exactness property (analogous to the left exactness satisfied by sheaves).  If you take the dual of a sheaf "objectwise" you get a cosheaf, and vice versa.
Comment: Wait..."the dual of $A$ is a cosheaf"??
Comment: I don't understand. The dual of the tangent sheaf $T_X$
of an algebraic variety $X$ is the cotangent sheaf
$T^*_X$, not the "tangent cosheaf" (whatever the latter could mean)...
Comment: What do you want to do with your cosheaves (aside from pulling them back and pushing them forward)?
Comment: All the possible operations that one can do with a sheaf. Like taking their external tensor product. How about the structural cosheaf? is it a cosheaf of corings?

So, I have a quasicoherent sheaf $A$ of algebras over a scheme $X$. That means it is essentially $\mathcal{O}_X$-modules.
The dual of $A$ is a cosheaf. Will this dual cosheaf be also quasicoherent? And will it be a quasicoherent cosheaf of coalgebras? I mean, will it be $\mathcal{O}_X$-comodules.

Please suggest some good literature on this if you know some!
Comment: If $\mathcal{A}$ is a sheaf of algebras over $\mathbb{K}$, then by the dual of $\mathcal{A}$, I mean $\mathcal{A}^∗:=\text{Hom}_{\mathbb{K}}(\mathcal{A},\mathbb{K})$, which I think is a coseaf!!!
Answer: I've written a preprint about (what I call) contraherent cosheaves of modules over the structure sheaf of rings of a scheme -- http://arxiv.org/abs/1209.2995 .  These are a kind of dual creatures to quasi-coherent sheaves.  The preprint will be updated and expanded (eventually).
Comment: The term was chosen because contraherent cosheaves stand in the same relationship to quasi-coherent sheaves as contramodules do to comodules over corings.  Also, "contraherent" seems to be a legitimate Latin word (with the meaning rather close to that of "coherent", as far as I can tell) -- http://en.wiktionary.org/wiki/contraherent
Comment: I can't decide if "Contraherent" is an ugly co-ification of "coherent", or if it is a really good pun.
Answer: If you have the stomach for hard topos theory a good reference is
Singular coverings of toposes -- M. Bunge, J. Funk
The first chapter is probably enough to answer your question. The upshot is that if you have a site, then the category of cosheaves can be identified with the category of cocontinuous functors on the category of sheaves. This should give you a pretty good idea of what operations you can perform on cosheaves.
Btw, in this context, cosheaves are also called Lawvere distributions -- distributions because of the analogy with the Riesz representation theorem that identifies measures (cosheaves) with linear functionals (cocontinuous functors).
Hope it helps, regards,
G. Rodrigues
Comment: Many thanks Rodrigues.
What I am still thinking is how to define quasicoherent cosheaves! It seems that it is natural to think of them as cosheaves of $\mathcal{O}^\circ_X$-comodules. and call them quasicoherent if their dual sheaf is quasicoherent. What do you say?
Comment: @Neha: unfortunately, cannot help you with quasi-coherence. My knowledge about it resumes to knowing where I can find the definition if I ever need it.
Answer: edit: I was assuming you wanted an equalizer sheaf property, but this is not the definition of cosheaf, see comments - the following has nothing to do with cosheaves then!
If by "cosheaf" you mean a covariant functor from the opens of a space to sets/groups/etc., you could look at Moerdijk/MacLane's "Sheaves in Geometry and Logic" - there you can learn some general sheaf theory on sites, which includes the cosheaf case. In particular pushforward and pullback are transport along the the two functors comprising a "geometric morphism". The notion of quasicoherent (co)sheaf can maybe also be defined in this generality by saying that something should look locally like a pullback from the "base topos".
Sorry for the jargon, I didn't get from your question what exactly you are up to - just take a look at the book and see if it suits you.
Comment: The descent conditions for sheaves and cosheaves are different.  I do not think that understanding cosheaves is simply a matter of passing to the opposite category in the manner you suggest.
Comment: Thanks Peter,
I want to learn all the operations that one can do with a sheaf. Like taking their external tensor product. How about the structural cosheaf? is it a cosheaf of corings? So, I have a quasicoherent sheaf $A$ of algebras over a scheme $X$. That means it is essentially $\mathcal{O}_X$-modules. The dual of $A$  is a cosheaf. Will this dual cosheaf be also quasicoherent? And will it be a quasicoherent cosheaf of coalgebras? I mean, will it be $\mathcal{O}_X$-comodules.
Comment: you could probably make something resembling quasicoherent if you understand what it means to localize a coalgebra or comodule(there are ways to do this) I don't know if it will be as efficient as the ordinary situation. You also have a cotensor product operation... I think for very general stuff like pushforward or pullback(not quasicoherent!) everything works fine if you just "op" the category of open sets and look at sheaves on that?
Comment: Yes, I didn't suspect there was a coequalizer property defining a cosheaf - then the above source will not lead you anywhere!
Comment: Thanks everybody.
Daniel, Can you please elaborate a bit more on localizing a coalgebra or a comodule. Where can I read about this more?
Answer: Look at Bredon's 'Sheaf Theory', Chapter Six: "Cosheaves and Cech Homology"
I am not aware of any quasi-coherent story.
Answer: According to Skliarienko, the Borel-Moore homology (with coefficients in a sheaf) is badly "defective"; and the "right" homology should have coefficients in a co(pre)sheaf. (He makes this point in a few of his works; but most clearly in the editor's comments to the Russian translation of Bredon's "Sheaf theory".)
In fact, there exist two papers by Beniaminov which are precisely about this. I'm a bit puzzled that Skliarienko cited them with enthusiasm in early 1970s, but later ignored on several occasions when speaking of the desired cosheaf homology. There is also a followup paper by Golovin which I haven't checked yet.

sheaves and cosheaves


How can we add custom extended field on top of the screen while new contact creation?

Question: I have added a new custom extended field in audience manager contact creation window. But I want my custom required field on top of this screen. And Can we move my custom field to General tab.
Comment: Are you using the Import Source field at all? If not why not renaming its label to Brand and use that, it will be then displayed 2nd. The fields are displayed in the order of the columns in the Tridion_cm_email database table CONTACTS_EXTENDED_DETAILS. However, it is hard to change the order of columns in SQL Server/Oracle, so working on a UI extension may be an alternative. Else in a not supported way you could modify the Stored Procedure which is reading contact details, but this will not work anymore after an upgrade...
Comment: Did any of the answers posted below help you with this question? If so, please accept one of them?
Answer: The order is determined by the database. So if you can change the order there, you can have it show up at the top.
You cannot put it on the General tab, as that's for the built-in fields that aren't customizable.
Of course you could try to do something like that in a GUI extension, but I doubt it would be worth the investment.
(FYI, the next version will likely have the ability to move the fields up and down as you wish)
Answer: Please read the documentation about Custom Contact extension.


When gaining a new skill through a connection, do players gain it at level 1 or 0?

Question: Gaining one level in any skill seems to fall outside the standard "Skills can be listed with or without an associated level. If no rank is listed, then you gain that skill at Level 1 if you do not have it already, or increases its level by one if you are already trained in that field." due to the lack of listing the actual skill, any clarification on this issue would be nice.
Answer: You should probably Gain it at Level 1
This case falls between the rules as written so direct rules reference is not really possible. The Connections rule only says:

For each connection you make, you gain one level in any Skill

The argument against the you get it at Level 1 is that going from untrained to level 0 is also upping the level as this means it you no longer get the penalties for untrained use.
But I would argue that you can see the skill you gain from the connection as a skill listed without an associated level and apply the general rule:

Skills can be listed with or without an associated level. If no rank is listed, then you gain that skill at Level 1 if you do not have it already, or increases its level by one if you are already trained in that field

The other argument is that the intend of the connection rule is two fold on one side it rewards you for adding a connection and with that a roleplay hook. On the other hand you gain a level in a skill which means you can chose to start with a higher power character balanced with that you increase your Skill Total making learning new skills more work.
Knowing this you can see the intent as raising your Skill Total by one and as untrained skills and Level 0 skills both count as 0 for this total moving a skill from untrained to 0 would not increase the Skill Total
Comment: 0 is not really a level; rather, it's a signal that unskilled penalties do not apply. During character creation, when you roll on the skill table, you "gain a level" in the selected skill; if you don't have the skill before, you get the skill at level 1, not level 0.  The only time you gain a skill at level 0 is when the rules explicitly grant the level 0 skill, e.g., in homeworld/background skills, or career automatic skills on advancement.
Comment: Don't disagree with your characterization, but it is a named skill level. And its effects, in terms of removing the unskilled penalties, is more significant than a single skill level as a modifier, so it's at least as important as a skill level.

I have always seen level-0 skills as a way to let players have a broader range of unpenalized activities. It's like taking a 2 week to 2 month course in something.... you learn enough to be less incompetent.
Answer: No rank is listed, thus you add 1 rank to an existing skill, or gain a new skill at rank 1.  The detail that you choose the skill rather than having a specific skill listed is not significant.
There are very few situations where skills are gained at rank 0 (homeworld background skills, basic training) and, in those cases, you cannot gain or increase the skill above rank 0.  In this case, existing skills can be increased to a maximum of rank 3, thus it is not subject to a "rank 0 and no higher" limitation.
Comment: So if I get a 0 level skill during the homeworld/background step, and then I receive it again without a level attached, it would move to level 1, would it not?

And what about the case where I have a skill at level 1 and then get an award of that same skill at level 1 (not without a level where it would go to 2) - does it still go to 2? Or is it wasted because I already have level 1 in that skill?
Comment: @user3055321 - If you get an award of a skill at level 1, then you get the skill _at level 1_. If you previously had it at level 0, if becomes level 1.  If you previously had it at level 1 or higher, then it is wasted.  This is the difference between an award of "Pilot" (add 1 to existing skill level) and an award of "Pilot 1" (raise skill level to 1 if lower, do nothing if current skill level is 1 or higher).